一尘不染

如何在Hibernate中用TableGenerator替换不推荐使用的MultipleHiLoPerTableGenerator

spring-boot

我在带有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 Core 5.0.9.Final
  • hibernate搜索ORM 5.5.1。最终
  • Lucene 5.3.1

阅读 490

收藏
2020-05-30

共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

2020-05-30