HiberNate生成的序列值与数据库不同步

3
我正在使用Oracle作为后端,当我尝试插入任何条目时,Hibernate生成的序列顺序为“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;
}

启用调试后,我可以看到Hibernate实际上从数据库中获取了正确的nextval,但在获取后,它使用rg.hibernate.id.SequenceHiLoGenerator将其转换为其他值。你有什么想法为什么会出现这种行为? - dpsdce
1个回答

5

@Dhirendra: 试试这个:

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

SequenceHiLoGenerator是JPA的默认序列生成器,分配大小默认值为50。


非常感谢,我已经解决了。只是因为我没有足够的声望来发布答案,所以无法发帖 :) - dpsdce

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接