gpt4 book ai didi

hibernate - 当 jpa.properties.hibernate.id.new_generator_mappings :true 时使用已弃用的 [org.hibernate.id.SequenceGenerator] 和唯一约束违规

转载 作者:行者123 更新时间:2023-12-01 10:30:33 27 4
gpt4 key购买 nike

升级到 Hibernate 5 后,我收到错误 Found use of deprecated [org.hibernate.id.SequenceGenerator] .我找到了 this answer其中有一段代码片段提到了如何解决问题。

  • 我想知道该解决方案是如何工作的。该代码片段是否与 @SequenceGenerator 做同样的事情?注解?如果是这样,为什么 SequenceGenerator已弃用?
  • 我的注释来自 javax.persistence包裹。我不想在我的代码中添加 hibernate 特定的东西。在我链接的答案中有 strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator",这是 hibernate 依赖(至少在运行时)。有没有办法实现这一目标?
  • 当我设置 hibernate.id.new_generator_mappings:true我收到唯一违反约束的错误
  • 最佳答案

    回答我自己的问题,

    上面的弃用警告是因为 Spring Boot 1.5 集jpa.properties.hibernate.id.new_generator_mappings: false .如果设置为 true,Hibernate 将在内部使用 SequenceStyleGenerator警告不会到来。

    但是为获取序列的下一个值而执行的逻辑会有所不同。

  • 将上述设置设为 false,org.hibernate.id.SequenceGenerator本来可以用的,这个好像没有用allocationSize @SequenceGenerator 的参数.它将始终调用数据库以获取序列的下一个值。还有一个SequenceHiLoGenerator并引用其 javadoc , An IdentifierGenerator that combines a hi/lo algorithm with an underlying oracle-style sequence that generates hi values.所以这个可以和INCREMENT BY一起使用创建 Orcale 序列时,该生成器不会为每个插入调用数据库。
  • 将上述设置设为 true,Hibernate 将默认使用 PooledOptimizer 确实使用了 allocationSize范围。由于 id 生成方式的差异,我得到了唯一的约束违规错误。
  • 关于hibernate - 当 jpa.properties.hibernate.id.new_generator_mappings :true 时使用已弃用的 [org.hibernate.id.SequenceGenerator] 和唯一约束违规,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43179147/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com