如何将已弃用的 MultipleHiLoPerTableGenerator 替换为 Hibernate 中的 TableGenerator

我在具有弹簧启动1.4.0.RELEASE的应用程序中使用休眠。

索引的实体如下所示:

@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.

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

我使用以下依赖项:

  • 休眠核心 5.0.9.最终版
  • 休眠搜索 ORM 5.5.1.最终版
  • 卢塞内 5.3.1

答案 1

在 Hibernate 中控制此行为的属性是 ,对于 Hibernate 5 -> 默认为 true,这意味着将使用 new 而不是弃用的 。hibernate.id.new_generator_mappingsTableGeneratorMultipleHiLoPerTableGenerator

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

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


答案 2

推荐