自弃用以来替换@SequenceGenerator

Fin*_*ize 25 java hibernate sequence-generators

我有一个问题@SequenceGenerator:

@SequenceGenerator(name="pk_user_id", sequenceName="seq_user_id", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="pk_user_id")
Run Code Online (Sandbox Code Playgroud)

应用程序启动时会显示警告:

WARN 7388 --- [main] org.hibernate.orm.deprecation:HHH90000014:发现使用不推荐的[org.hibernate.id.SequenceHiLoGenerator]基于序列的id生成器; 请改用org.hibernate.id.enhanced.SequenceStyleGenerator.有关详细信息,请参阅"休眠域模型映射指南"

我试图找出如何用新的代码替换已弃用的代码,但找不到任何解决方案.

sem*_*kus 42

根据警告消息和Hibernate文档(Hibernate弃用列表),您应该使用SequenceStyleGenerator.或者更好地使用@GenericGenerator并指定生成器策略.

以下是一个典型的用法示例:

@GenericGenerator(
        name = "wikiSequenceGenerator",
        strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",
        parameters = {
                @Parameter(name = "sequence_name", value = "WIKI_SEQUENCE"),
                @Parameter(name = "initial_value", value = "1000"),
                @Parameter(name = "increment_size", value = "1")
        }
)
@Id
@GeneratedValue(generator = "wikiSequenceGenerator")
Run Code Online (Sandbox Code Playgroud)

  • 如果升级到Spring Boot 1.4.x,请检查[this](http://stackoverflow.com/a/39244191/3109776) (7认同)
  • 如果注释来自JPA怎么办? (4认同)
  • 如果使用Hibernate 4,可以在不更改代码`properties.put("hibernate.id.new_generator_mappings","true")的情况下更改属性;`(参见[Vlad Mihalcea blog](https://vladmihalcea.com/2014/) 7月15日/从-JPA到Hibernate的遗留和增强标识符发电机/)).但是hibernate 5默认使用增强型生成器,因此不需要该属性. (3认同)