🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 5.1.19\. 键(key) 我们目前已经见到过`&lt;key&gt;`元素多次了。 这个元素在父映射元素定义了对新表的连接,并且在被连接表中定义了一个外键引用原表的主键的情况下经常使用。 ``` <key column="columnname" on-delete="noaction|cascade" property-ref="propertyName" not-null="true|false" update="true|false" unique="true|false" /> ``` | ![1](https://box.kancloud.cn/2015-10-12_561bcb76795ae.png) | `column` (可选): 外键字段的名称。也可以通过嵌套的 `&lt;column&gt;`指定。 | |:--- |:--- | | ![2](https://box.kancloud.cn/2015-10-12_561bcb768596e.png) | `on-delete` (可选, 默认是 `noaction`): 表明外键关联是否打开数据库级别的级联删除。 | | ![3](https://box.kancloud.cn/2015-10-12_561bcb94ee26f.png) | `property-ref` (可选): 表明外键引用的字段不是原表的主键(提供给遗留数据)。 | | ![4](https://box.kancloud.cn/2015-10-12_561bcb9508b82.png) | `not-null` (可选): 表明外键的字段不可为空(这意味着无论何时外键都是主键的一部分)。 | | ![5](https://box.kancloud.cn/2015-10-12_561bcb95133e7.png) | `update` (可选): 表明外键决不应该被更新(这意味着无论何时外键都是主键的一部分)。 | | ![6](https://box.kancloud.cn/2016-01-06_568cdb4f32753.png) | `unique` (可选): 表明外键应有唯一性约束 (这意味着无论何时外键都是主键的一部分)。 | 对那些看重删除性能的系统,我们推荐所有的键都应该定义为`on-delete="cascade"`,这样 Hibernate 将使用数据库级的`ON CASCADE DELETE`约束,而不是多个`DELETE`语句。 注意,这个特性会绕过 Hibernate 通常对版本数据(versioned data)采用的乐观锁策略。 `not-null` 和 `update` 属性在映射单向一对多关联的时候有用。如果你映射一个单向一对多关联到非空的(non-nullable)外键,你_必须_ 用`&lt;key not-null="true"&gt;`定义此键字段。