Hibernate学习-用oracle sequence序列生成ID的配置示例
2017-07-22 23:07
344 查看
TMP_EMP中的ID是根据序列SQ_TMP_EMP来生成的,需要在TmpEmp.hbm.xml中设置:
<id name="id" type="long">
<column name="ID" not-null="true" sql-type="NUMBER" unique="true"/>
<generator class="sequence">
<param name="sequence">SQ_TMP_EMP</param>
</generator>
</id>
这样运行时,Hibernate就会自动从SQ_TMP_EMP中取nextval用来填充到ID字段中
示例代码:
先创建一个工具类
+
View Code
添加记录的类
+
View Code
运行结果:
Hibernate: select IGSA.SQ_TMP_EMP.nextval from dual
Hibernate: insert into IGSA.TMP_EMP (NAME, BIRTHDAY, SEX, SALARY, ID) values (?, ?, ?, ?, ?)
插入成功,新记录的ID是:210
当然,除用.hbm.xml来配置外,等效的注解方式,可以参考下面的写法:
基本上这样就行了,但是实际运行会发现sequence每次并不是加1,而是一个其它的数,如果想要每次加1,参考下面这样:
<id name="id" type="long">
<column name="ID" not-null="true" sql-type="NUMBER" unique="true"/>
<generator class="sequence">
<param name="sequence">SQ_TMP_EMP</param>
</generator>
</id>
这样运行时,Hibernate就会自动从SQ_TMP_EMP中取nextval用来填充到ID字段中
示例代码:
先创建一个工具类
+
View Code
添加记录的类
+
View Code
运行结果:
Hibernate: select IGSA.SQ_TMP_EMP.nextval from dual
Hibernate: insert into IGSA.TMP_EMP (NAME, BIRTHDAY, SEX, SALARY, ID) values (?, ?, ?, ?, ?)
插入成功,新记录的ID是:210
当然,除用.hbm.xml来配置外,等效的注解方式,可以参考下面的写法:
1 @Id 2 @SequenceGenerator(name="bkdex_seq_generator",sequenceName="SQ_BKD_EX") 3 @GeneratedValue(generator="bkdex_seq_generator",strategy=GenerationType.SEQUENCE) 4 @Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0) 5 public BigDecimal getId() { 6 return this.id; 7 }
基本上这样就行了,但是实际运行会发现sequence每次并不是加1,而是一个其它的数,如果想要每次加1,参考下面这样:
1 @Id 2 @SequenceGenerator(name = "SEQ_ORDER", sequenceName = "SEQ_ORDER", allocationSize = 1) 3 @GeneratedValue(generator = "SEQ_ORDER", strategy = GenerationType.SEQUENCE) 4 @Column(name = "ID", unique = true, nullable = false, precision = 22, scale = 0) 5 public BigDecimal getId() { 6 return this.id; 7 }
allocationSize=1 这个是关键
相关文章推荐
- java学习:Hibernate学习-用oracle sequence序列生成ID的配置示例
- hibernate ID生成策略配置
- SS6.1_Hibernate_Hibernate_IdStrategyAnnotation 主键生成策略native Annotation注解的配置方式
- Hibernate学习笔记-ID生成策略
- Hibernate 学习笔记03 --ID生成策略
- Hibernate框架学习(第三讲)---Hibernate注解以及ID生成策略
- Hibernate学习笔记-ID生成策略
- Solr6.6.0学习(五)Solr对IK分词器的配置、Solr自动生成唯一ID、Solr服务器的增量和全量更新
- Hibernate学习——(三)ID生成策略介绍
- hibernate 配置文件 和一个 id生成类BaseEntity.java 和一个hibernate工具类 HibernatUtils.java
- hibernate ID生成策略配置
- Hibernate学习笔记(4)ID生成策略
- Hibernate学习笔记_ID生成策略
- SS6.2_Hibernate_Hibernate_IdStrategyAnnotation 主键生成策略uuid Annotation注解的配置方式
- 【hibernate框架】uuid与native生成ID的样例-XML配置
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
- hibernate配置oracle生成序列结果为负数
- Rhythmk 学习 Hibernate 03 - Hibernate 之 延时加载 以及 ID 生成策略
- Hibernate配置及三种Id生成策略
- hibernate生成主键id的配置