java - 如何在 Hibernate 中用 TableGenerator 替换已弃用的 MultipleHiLoPerTableGenerator

标签 java spring hibernate spring-boot hibernate-search

我在 Spring Boot 1.4.0.RELEASE 的应用程序中使用 hibernate 。

索引的实体看起来类似于:

@Entity(name = "SearchableTariffItem")
@Indexed
public class SearchableTariffItem {
    public static final String ZIFFER_ANALYZER_NAME = "ZIFFER_ANALYZER";

    @GeneratedValue(strategy = GenerationType.TABLE)
    @Id
    private Long id;
    ...
}

我现在第一次保存实体时收到以下警告:

2016-08-26 15:08:32.501 WARN 8476 — [apr-8080-exec-6] org.hibernate.orm.deprecation : HHH90000015: Found use of deprecated [org.hibernate.id.MultipleHiLoPerTableGenerator] table-based id generator; use org.hibernate.id.enhanced.TableGenerator instead. See Hibernate Domain Model Mapping Guide for details.

不幸的是,我不知道在哪里可以配置我的应用程序(最好在 application.yml 中)以使用 TableGenerator 类。

我使用以下依赖项:

  • hibernate 核心 5.0.9.Final
  • Hibernate 搜索 ORM 5.5.1.Final
  • Lucene 5.3.1

最佳答案

在 Hibernate 中控制这种行为的属性是 hibernate.id.new_generator_mappings,它在 Hibernate 5 中默认为 true -> 这意味着将使用新的 TableGenerator已弃用的 MultipleHiLoPerTableGenerator

然而,Spring Boot 将此属性默认为 false,这意味着将使用旧的生成器,除非您明确告诉它您想要新的生成器。 您需要将属性 spring.jpa.hibernate.use-new-id-generator-mappings 设置为 true 以获取 TableGenerator。

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.4-Release-Notes#generator-mappings

关于java - 如何在 Hibernate 中用 TableGenerator 替换已弃用的 MultipleHiLoPerTableGenerator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39228304/

相关文章:

java - spring hibernate 和 mysql 支持需要哪些 Maven 工件?

java - 使用java API从mongodb插入语句获取GUID

java - 递归查找链表的最大值

java - Web 应用程序的客户端 Java 与 (Adobe) Flash,选择什么以及何时选择

java - 为什么当 application.properties 存在时不使用 @PropertySource ?

java - 将 id 值传递给操作类

java - 关于加载数据的 TabLayout 问题

spring - 避免在 Spring Batch 中处理同一文件两次

java - 注入(inject)不适用于新的运算符(operator)

java - 如何使用spring + hibernate向数据库中插入数据?