hibernate Oracle数据库如何配置主键自增
程序员文章站
2022-06-02 16:49:08
...
一般我们在数据库中建表,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配置文件,将你希望实现自增的字段,配置成如下样子:
这里补充一下
1.配置好自增之后,如果你再在dao层中设置主键的值,例如
那么这行代码其实是无效的,系统将自动使用序列值覆盖掉你写的值。
2.如果dao层对数据库进行操作,但是程序报错的话,那么你的序列值是已经被使用过的
例如你前面对数据库插入5条数据,但是由于某些错误,没有完成,那么1-5 的***是已经被使用过的,当你再成功插入值后,这个ID将会是6
3.对第二条补充一下,如果你的dao层没有任何错误,但是后续程序出错,那么你这个时候查看数据库,会发现数据好像并没有被插入。 但是当你完成了下一次成功的操作后,前面的值也会全部被插入。
那么如何配置使得主键可以实现自增功能?
首先新建一个数据库表
-- 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层没有任何错误,但是后续程序出错,那么你这个时候查看数据库,会发现数据好像并没有被插入。 但是当你完成了下一次成功的操作后,前面的值也会全部被插入。
上一篇: 组合主键——实体类——Oracle数据库
推荐阅读
-
Oracle数据库如何创建自增序列?
-
Oracle数据库下给表设置自增的逻辑主键的方法
-
Oracle数据库中创建自增主键的实例教程
-
ORACLE数据库创建表、自增主键、外键相关语法讲解
-
Oracle如何创建表的自增主键ID—SEQ序列和Mybatis.xml的selectKey代码
-
Mysql数据库 hibernate保存数据时,Mysql主键需设定自增,否则报错_MySQL
-
Mysql数据库 hibernate保存数据时,Mysql主键需设定自增,否则报错_MySQL
-
在做向Access数据表增加数据时,如何让数据库自增主键?
-
ibatis 如何利用自增主键插入数据库
-
ORACLE 数据库库表设置主键自增