ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 5.1.4\. id 被映射的类_必须_定义对应数据库表主键字段。大多数类有一个JavaBeans风格的属性, 为每一个实例包含唯一的标识。`&lt;id&gt;` 元素定义了该属性到数据库表主键字段的映射。 ``` <id name="propertyName" type="typename" column="column_name" unsaved-value="null|any|none|undefined|id_value" access="field|property|ClassName" node="element-name|@attribute-name|element/@attribute|."> <generator class="generatorClass"/> </id> ``` | ![1](https://box.kancloud.cn/2015-10-12_561bcb76795ae.png) | `name` (可选): 标识属性的名字。 | |:--- |:--- | | ![2](https://box.kancloud.cn/2015-10-12_561bcb768596e.png) | `type` (可选): 标识Hibernate类型的名字。 | | ![3](https://box.kancloud.cn/2015-10-12_561bcb94ee26f.png) | `column` (可选 - 默认为属性名): 主键字段的名字。 | | ![4](https://box.kancloud.cn/2015-10-12_561bcb9508b82.png) | `unsaved-value` (可选 - 默认为一个切合实际(sensible)的值): 一个特定的标识属性值,用来标志该实例是刚刚创建的,尚未保存。 这可以把这种实例和从以前的session中装载过(可能又做过修改--译者注) 但未再次持久化的实例区分开来。 | | ![5](https://box.kancloud.cn/2015-10-12_561bcb95133e7.png) | `access` (可选 - 默认为`property`): Hibernate用来访问属性值的策略。 | 如果 `name`属性不存在,会认为这个类没有标识属性。 `unsaved-value` 属性在Hibernate3中几乎不再需要。 还有一个另外的`&lt;composite-id&gt;`定义可以访问旧式的多主键数据。 我们强烈不建议使用这种方式。