当先锋百科网

首页 1 2 3 4 5 6 7

自增字段配置

普通的数据库

<?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, SybaseHypersonicSQL的内置标识字段提供支持。返回的标识符是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

  1. <id name="id" type="java.lang.Long">    
  2.     <column name="tableName_id" />    
  3.     <generator class="sequence">    
  4.     <param name="sequence">tableName_seq</param>    
  5.     </generator>      
  6. </id>    

 

说明:
每个表的主键id对应一个your_sequence_name
查询sequence select * from user_sequences;
删除sequence drop your_sequence_name;