当前位置:  开发笔记 > 编程语言 > 正文

Hibernate 5序列生成问题

如何解决《Hibernate5序列生成问题》经验,为你挑选了1个好方法。



1> Marmite Bomb..:

Hibernate调用SEQ_name.nextval但是如果allocationSize它大于1,它会通过allocationSize递减它并将其递增1.

下一个(allocationSize-1)密钥生成在没有与数据库通信的情况下通过增加1来完成.

因此,如果使用默认值allocationSize50,则会产生两种后果:

序列必须INCREMENT BY设置为相同的值 allocationSize

要将序列与数据库中的现有键对齐,请将其设置START WITH

max(ID)+ allocationSize

这是一个小例子

-- START WITH = max(ID) + allocation size 
-- INCREMENT BY = allocation size
-- e.g. if 100 is the last key,
-- to start with a key 101 - set START WITH to 150
CREATE SEQUENCE hib_seq START WITH 150 INCREMENT BY 50;



select hib_seq.nextval - 50 + 1 from dual;
101
-- 49 times Hibernate performs increase by 1 - keys 102 to 150
-- new sequence generation
select hib_seq.nextval - 50 + 1 from dual;
151

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有