被映射的类必须定义对应数据库表主键字段。大多数类有一个 JavaBeans 风格的属性, 为每一个实例包含唯一的标识。<id>
元素定义了该属性到数据库表主键字段的映射。
<id name="propertyName" type="
typename" column
="column_name" unsave
d-value="null|any|none|undefined|id_value" access
="field|property|ClassName"> node="element-name|@attribute-name|element/@attribute|." <generator class="generatorClass"/> </id >
|
|
|
|
|
|
|
|
|
|
unsaved-value
属性在 Hibernate3 中几乎不再需要。
Generator
可选的 <generator>
子元素是一个 Java 类的名字,用来为该持久化类的实例生成唯一的标识。如果这个生成器实例需要某些配置值或者初始化参数,用 <param>
元素来传递。
<id name="id" type="long" column="cat_id">
<generator class="org.hibernate.id.TableHiLoGenerator">
<param name="table">uid_table</param>
<param name="column">next_hi_value_column</param>
</generator>
</id>
-
用于为
long
,short
或者int
类型生成 唯一标识。只有在没有其他进程往同一张表中插入数据时才能使用。在集群下不要使用。 -
对 DB2,MySQL,MS SQL Server,Sybase 和 HypersonicSQL 的内置标识字段提供支持。返回的标识符是
long
,short
或者int
类型的。 -
使用一个高/低位算法来高效的生成
long
,short
或者int
类型的标识符,给定一个数据库序列(sequence)的名字。 -
用一个 128-bit 的 UUID 算法生成字符串类型的标识符,这在一个网络中是唯一的(使用了 IP 地址)。UUID 被编码为一个 32 位 16 进制数字的字符串。
increment
identity
sequence
hilo
seqhilo
uuid
guid
native
assigned
select
foreign
sequence-identity