自增字段配置
一普通的数据库
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/HibernateMapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.bjsxt.hibernate.Student">
<id name="id" type="int">
<generator class="identity"></generator>
</id>
<!-- <id name="id" type="int">-->
<!-- <column name="ID"/> -->
<!-- <generatorclass="native" />
increment:用于为long, short或者int类型生成唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。在集群下不要使用
native:根据底层数据库的能力选择identity, sequence 或者hilo中的一个。
sequence:在DB2,PostgreSQL, Oracle, SAP DB,McKoi中使用序列(sequence),
而在Interbase中使用生成器(generator)。返回的标识符是long, short或者 int类型的。
identity:对DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的内置标识字段提供支持。返回的标识符是long, short 或者int类型的
需要在数据库中设置该字段为自增字段或者设置默认值否则会报错
-->
<!-- </id> -->
<property name="name" />
<property name="age" />
</class>
</hibernate-mapping>
二 Oracle配置自增字段
首先创建表
对Oracle的主键自增
1.用hibernate的方式
第一步、建立表,并设置主键为tableName_id;
第二步、建立sequence视图,sql语句如下
[java] view plaincopy
create sequence tableName_seq
minvalue 1 start with 1 increment by 1 nocycle nocache;
其中,minvalue表示最小值,start with表示开始值,increment by表示每次增加数,nocycle表示主键不循环,nocache表示不缓存
cache可以加快速度,但出现异常时可能会出现不连续的ID。
第三步,hibernate中的xml映射
[java] view plaincopy
- <id name="id" type="java.lang.Long">
- <column name="tableName_id" />
- <generator class="sequence">
- <param name="sequence">tableName_seq</param>
- </generator>
- </id>
说明:
每个表的主键id对应一个your_sequence_name
查询sequence为 select * from user_sequences;
删除sequence为 drop your_sequence_name;