hibernate oracle主键自增长中sequence跳号无序的问题
2016-11-06 12:23
621 查看
1. 配置序列产生器相关属性
hibernate注解设置数据库主键自增长时,如果Oracle表中的主键ID没有按照正常的sequence自增长(+1)存入数据库。可以在序列产生器中加上
= 1就可以了
例子如下:
[html]
view plain
copy
@Id
@SequenceGenerator(name="cat_id_seq",sequenceName="cat_id_seq",allocationSize=1,initialValue=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="cat_id_seq")
@Column(name="id")
private Integer id;
name 必需 必须匹配
3. 实际操作中出现的问题
(1)每次更改allocationSize属性后,第一次插入数据库的主键ID是随机的,如:改allocationSize = 10,运行一次程序,ID起始值变成了40,如图:
再改成allocationSize = 1,再提交数据,ID起始值又变成了5,如图:
改成其他值时也是又是随机的起始值,若不改动allocationSize,则是正常的自增,每一次的起始值也是接着上一次的。不知道这是什么原因。
(2)initialValue=1这个属性设置为多少,好像每次都不影响ID的初始值,好像没起作用,例如:改为initialValue=100,提交数据后,数据库显示的ID还是从1开始,还是按照oracle中cat_id_seq中设置的起始值minValue和nextNumber来进行,如图:
不知是怎么回事。
hibernate注解设置数据库主键自增长时,如果Oracle表中的主键ID没有按照正常的sequence自增长(+1)存入数据库。可以在序列产生器中加上
allocationSize(步长)属性的设置,即:在@SequenceGenerator中加入allocationSize
= 1就可以了
例子如下:
[html]
view plain
copy
@Id
@SequenceGenerator(name="cat_id_seq",sequenceName="cat_id_seq",allocationSize=1,initialValue=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="cat_id_seq")
@Column(name="id")
private Integer id;
2. @SequenceGenerator 相关属性:
属性 是否必需 说明name 必需 必须匹配
startegy中
SEQUENCE的
GeneratedValue的名称
allocationSize 可选 默认值: 50
initialValue 可选 默认值: 0
sequenceName 可选 默认值: JPA 持续性提供程序分配它自己创建的序列名
3. 实际操作中出现的问题
(1)每次更改allocationSize属性后,第一次插入数据库的主键ID是随机的,如:改allocationSize = 10,运行一次程序,ID起始值变成了40,如图:
再改成allocationSize = 1,再提交数据,ID起始值又变成了5,如图:
改成其他值时也是又是随机的起始值,若不改动allocationSize,则是正常的自增,每一次的起始值也是接着上一次的。不知道这是什么原因。
(2)initialValue=1这个属性设置为多少,好像每次都不影响ID的初始值,好像没起作用,例如:改为initialValue=100,提交数据后,数据库显示的ID还是从1开始,还是按照oracle中cat_id_seq中设置的起始值minValue和nextNumber来进行,如图:
不知是怎么回事。
相关文章推荐
- hibernate oracle主键自增长中sequence跳号无序的问题
- Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长:
- Hibernate注解映射sequence时出现无序增长问题+hibernate 映射 oracle ID自动增长
- Hibernate注解对应Oracle主键序列问题错误收集
- hibernate中使用oracle的序列作为主键问题
- Hibernate支持oracle主键自增长
- 在 Hibernate 中使用 oracle 的 sequence 产生主键实现 SQL Server 自增长字段功能
- hibernate + oracle 映射主键问题
- 初识Hibernate(中文乱码问题+主键自动增长)
- Hibernate注解映射sequence时出现无序增长问题
- 从别的数据库导入数据时主键和自增长字段属性丢失问题
- 详细解决用myEclips的db Browser连接到Oracle后,用反向工程Hibernate Reverse Engineering 生成.hbm.xml,POJD类还有DAO时出错的问题
- ORACLE新增主键问题【CREATE PRIMARY KEY AFTER CREATED A TABLE】
- oracle中的主键自动增长
- 使用MyEclipse+Spring+Hibernate+Struts+Oracle开发时的问题
- Hibernate中处理无主键表的问题
- 深入Mysql,SqlServer,Oracle主键自动增长的设置详解
- hibernate 自动主键问题
- hibernate产生自动增长的主键
- Mysql,SqlServer,Oracle主键自动增长的设置