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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值