5.1.14. properties
<properties>
元素允许定义一个命名的逻辑分组(grouping)包含一个类中的多个属性。 这个元素最重要的用处是允许多个属性的组合作为property-ref
的目标(target)。 这也是定义多字段唯一约束的一种方便途径。
<properties
name="logicalName"
insert="true|false"
update="true|false"
optimistic-lock="true|false"
unique="true|false"
>
<property ...../>
<many-to-one .... />
........
</properties>
name : 分组的逻辑名称 - 不是 实际属性的名称. |
|
---|---|
insert : 被映射的字段是否出现在SQL的 INSERT 语句中? |
|
update : 被映射的字段是否出现在SQL的 UPDATE 语句中? |
|
optimistic-lock (可选 - 默认是 true ):表明更新此组件是否需要获取乐观锁。换句话说,当这个属性变脏时,是否增加版本号(Version) |
|
unique (可选 - 默认是 false ):表明组件映射的所有字段上都有唯一性约束 |
例如,如果我们有如下的<properties>
映射:
<class name="Person">
<id name="personNumber"/>
...
<properties name="name"
unique="true" update="false">
<property name="firstName"/>
<property name="initial"/>
<property name="lastName"/>
</properties>
</class>
然后,我们可能有一些遗留的数据关联,引用 Person
表的这个唯一键,而不是主键。
<many-to-one name="person"
class="Person" property-ref="name">
<column name="firstName"/>
<column name="initial"/>
<column name="lastName"/>
</many-to-one>
我们并不推荐这样使用,除非在映射遗留数据的情况下。