5.1.14. properties

<properties> 元素允许定义一个命名的逻辑分组(grouping)包含一个类中的多个属性。 这个元素最重要的用处是允许多个属性的组合作为property-ref的目标(target)。 这也是定义多字段唯一约束的一种方便途径。

  1. <properties
  2. name="logicalName"
  3. insert="true|false"
  4. update="true|false"
  5. optimistic-lock="true|false"
  6. unique="true|false"
  7. >
  8. <property ...../>
  9. <many-to-one .... />
  10. ........
  11. </properties>
1name: 分组的逻辑名称 - 不是 实际属性的名称.
2insert: 被映射的字段是否出现在SQL的 INSERT语句中?
3update: 被映射的字段是否出现在SQL的 UPDATE语句中?
4optimistic-lock (可选 - 默认是 true):表明更新此组件是否需要获取乐观锁。换句话说,当这个属性变脏时,是否增加版本号(Version)
5unique (可选 - 默认是 false):表明组件映射的所有字段上都有唯一性约束

例如,如果我们有如下的&lt;properties&gt;映射:

  1. <class name="Person">
  2. <id name="personNumber"/>
  3. ...
  4. <properties name="name"
  5. unique="true" update="false">
  6. <property name="firstName"/>
  7. <property name="initial"/>
  8. <property name="lastName"/>
  9. </properties>
  10. </class>

然后,我们可能有一些遗留的数据关联,引用 Person表的这个唯一键,而不是主键。

  1. <many-to-one name="person"
  2. class="Person" property-ref="name">
  3. <column name="firstName"/>
  4. <column name="initial"/>
  5. <column name="lastName"/>
  6. </many-to-one>

我们并不推荐这样使用,除非在映射遗留数据的情况下。