hibernate Oracle数据库如何配置主键自增

一般我们在数据库中建表,ID都会作为主键,主键作为一个每次新建数据自增加1的字段,大部分情况下作为唯一标识。

那么如何配置使得主键可以实现自增功能?

首先新建一个数据库表
-- Create table
create table TBL_SCHEDULE_TEMPLATE
(
ID VARCHAR2(100) not null,
NAME VARCHAR2(4000) not null,
PROJECT VARCHAR2(100) not null,
) //我这个就偷懒全设成varchar2了, 顺便也请问一下大家 这样做会不会不好?


之后对应这张表,逆生成java实体和hibernate配置文件,这个问题可以参考
http://862123204-qq-com.iteye.com/blog/1555379 这个里面有详细的如何使用Eclipse逆生成实体和配置文件。

假设已经有个java实体和hibernate的配置文件

现在需要在数据库中建立一个序列 sequence

-- Create sequence
create sequence SEQ_TEMPLATE
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;

现在只需要做一步,修改hibernate配置文件,将你希望实现自增的字段,配置成如下样子:
<id name="id" type="string">
<column name="ID" precision="16" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_TEMPLATE</param>
</generator>
</id>



这里补充一下
1.配置好自增之后,如果你再在dao层中设置主键的值,例如
XXXX.setID("1")

那么这行代码其实是无效的,系统将自动使用序列值覆盖掉你写的值。

2.如果dao层对数据库进行操作,但是程序报错的话,那么你的序列值是已经被使用过的
例如你前面对数据库插入5条数据,但是由于某些错误,没有完成,那么1-5 的序列号是已经被使用过的,当你再成功插入值后,这个ID将会是6

3.对第二条补充一下,如果你的dao层没有任何错误,但是后续程序出错,那么你这个时候查看数据库,会发现数据好像并没有被插入。 但是当你完成了下一次成功的操作后,前面的值也会全部被插入。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值