【问题标题】:HiberNate generated sequence value not in Sync with DBHiberNate 生成的序列值与 DB 不同步
【发布时间】:2011-09-25 17:27:16
【问题描述】:

我使用 Oracle 作为后端,当我尝试插入任何条目时,休眠生成的序列的顺序为“50010255”,但在我的数据库中,SEQ_AD_WORK 序列的当前值仅显示“1000221”我无法弄清楚这是怎么发生的。

以下是我的配置

   <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.query.startup_check">false</prop>
            <!-- 
            <prop key="hibernate.hbm2ddl.auto">create</prop>
            -->
        </props>
    </property>`

   @Id
@Column(name = "ITEM_ID", unique = true, nullable = false,  scale = 0)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_AD_WORK")
 @SequenceGenerator(name="SEQ_AD_WORK", sequenceName="SEQ_AD_WORK")
public Long getAdWorkItemId() {
    return this.adWorkItemId;
}

【问题讨论】:

  • 启用调试后,我可以看到休眠实际上是从数据库中获取正确的 nextval,方法是使用 rg.hibernate.id.SequenceHiLoGenerator 将其转换为其他值,知道为什么会出现这种行为吗?

标签: oracle hibernate sequence


【解决方案1】:

@Dhirendra:试试这个:-

@SequenceGenerator(name="SEQ_AD_WORK",sequenceName="SEQ_AD_WORK",,allocationSize=1)

SequenceHiLoGenerator 是 JPA 的默认序列生成器,默认的 allocationSize 值为 50,

【讨论】:

  • 非常感谢我让它工作了。只是无法发布答案,因为我没有足够的声誉来发布:)
猜你喜欢
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 2020-04-11
  • 2011-06-04
  • 2016-04-29
  • 2018-05-07
相关资源
最近更新 更多