Hibernate主键策略-sequence

今天在公司使用hibernate时遇到一个麻烦的问题,使用hibernate时将表的主键生成策略设定为sequence,但是在执行时总是报could not get next sequence value的错误,后来想起来别人给的建表SQL没有建立sequence的语句,于是就建立了个sequence,同时还建立了触发器,这就又引起了一个问题,最后发现只要建立个sequenceOK了,花了我不少时间有必要记录下。

使用hibernate 插入数据到oracle,如果采用sequence式生成主键则需要hibernate的配置文件里指名相应sequence同时在oracle中建立的sequence不要建立触发

建立sequencesql语句如下

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项目)。

你可能感兴趣的:(oracle,sql,Hibernate,Web)