今天在公司使用hibernate时遇到一个麻烦的问题,使用hibernate时将表的主键生成策略设定为sequence,但是在执行时总是报could not get next sequence value的错误,后来想起来别人给的建表SQL没有建立sequence的语句,于是就建立了个sequence,同时还建立了触发器,这就又引起了一个问题,最后发现只要建立个sequence就OK了,花了我不少时间有必要记录下。
使用hibernate 插入数据到oracle时,如果采用sequence方式生成主键则需要在hibernate的配置文件里指名相应的sequence,同时在oracle表中建立的sequence不要建立触发器
建立sequence的sql语句如下:
drop SEQUENCE exp_sequence
CREATE SEQUENCE exp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
NOCACHE -- 不建缓冲区
Hibernate端的关于主键的配置如下
<class name="org.taomujian.test.Expenseinfo" table="EXPENSEINFO" schema="EOS">
<id name="expid" type="java.lang.Long">
<column name="EXPID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">exp_sequence</param>
</generator>
</id>
附件为使用的例子,配置好数据库即可使用(不用启动服务器,虽然建立的是web项目)。
分享到:
相关推荐
Hibernate各种主键生成策略详解,包括 assigned increment hilo seqhilo sequence identity native uuid foreign uuid.hex sequence-identity 等
Hibernate主键生成方式 1.identity方式 2.increment方式 3.assigned方式 4.sequence方式 5.native方式 6.UUID方式
总结一下关于JPA的主键生成策略,JPA是用@GeneratedValue标记来注释的。一般的我把主键生成分成两大类。第一个就是简单的单字段主键类型,一个就是复杂的复合主键...4. Sequence:像Oracle支持Sequence的生成主键策略
5.1.2 Hibernate访问持久化类属性的策略 5.1.3 在持久化类的访问方法中加入程序逻辑 5.1.4 设置派生属性 5.1.5 控制insert和update语句 5.2 处理SQL引用标识符 5.3 创建命名策略 5.4 设置数据库Schema...
第13课 ID主键生成策略 20 一、 Xml方式 20 元素(主键生成策略) 20 二、 annotateon方式 21 1、AUTO默认 21 2、IDENTITY 22 3、SEQUENCE 22 4、为Oracle指定定义的Sequence 22 5、TABLE - 使用表保存id值 23 三、 ...
本资源为原创. 其中剖析了hibernate+JPA对主键的生成方式的分类,以及在真实项目中如何使用,并且剖析各种数据库间的主键序列(sequence)原理以及使用.
* 13.sequence-identity sequence策略的扩展,采用立即检索策略来获取sequence值,需要JDBC3.0和JDK4以上(含1.4)版本 * 例:@GeneratedValue(generator = "paymentableGenerator") * @GenericGenerator(name = ...
<sequence-generator name="SEQ_GEN" sequence-name="my_sequence" allocation-size="20"/> //and the annotation equivalent @javax.persistence.SequenceGenerator( name="SEQ_GEN", sequenceName="my_...
本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...
5.1.2 Hibernate访问持久化类属性的策略 5.1.3 在持久化类的访问方法中加入程序逻辑 5.1.4 设置派生属性 5.1.5 控制insert和update语句 5.2 处理SQL引用标识符 5.3 创建命名策略 5.4 设置数据库Schema...
5.1.2 Hibernate访问持久化类属性的策略 5.1.3 在持久化类的访问方法中加入程序逻辑 5.1.4 设置派生属性 5.1.5 控制insert和update语句 5.2 处理SQL引用标识符 5.3 创建命名策略 5.4 设置数据库Schema...
5.1.2 Hibernate访问持久化类属性的策略 5.1.3 在持久化类的访问方法中加入程序逻辑 5.1.4 设置派生属性 5.1.5 控制insert和update语句 5.2 处理SQL引用标识符 5.3 创建命名策略 5.4 设置数据库Schema...
本章主要介绍关系数据库中的代理主键(不具有业务含义),接着介绍Hibernate提供的几种内置标识符生成器的用法及适用范围。 6.1 关系数据库按主键区分不同的记录 123 6.1.1 把主键定义为自动增长标识符类型 123 ...
(八) 复合自然主键实例(源代码hibernate_0500) 218 (九) Hibernate的类型 224 1. Java基本值类型的Hibernate映射 224 2. Java时间和日期类型的Hibernate映射类型 224 3. Java大对象类型的Hibernate映射类型 225 4....
Hibernate主键介绍 63 71.18.1. Assigned 63 71.18.2. Hilo 63 71.18.3. Increment 64 71.18.4. Identity 64 71.18.5. Sequence 64 71.18.6. Native 64 71.18.7. UUID 64 71.18.8. Foreign GUID 65 71.19. ...
{12.24}sequence}{189}{section.12.24} {12.25}PL/SQL}{189}{section.12.25} {13}JDBC}{191}{chapter.13} {13.1}forName}{191}{section.13.1} {13.2}JDBC}{191}{section.13.2} {13.3}连接Oracle数据库及操作}{...
例如:数据库查询条件的传入问题是所有ORM框架都不能回避的一个问题,所以我经常在想——既然我们可以用向DAO传入一个Entity来实现插入操作,为什么就不能用同样的方法来描述一个不以主键为条件的update/select/...
2.8.2 实现Sequence主键生成策略 21 2.9 如何清除Hibernate Session中的对象 22 2.10 使用日期控件 22 2.11 如何引入外部文件 23 2.11.1 主页面采用include方式,引入各个子页面jsp文件 23 2.11.2 主页面用${ctx}...