2

想象一个城市到邮政编码的关系映射。(为简单起见,不使用外键)

<class name="CityToPostalcode" table="city_to_postalcode" catalog="database">
    <id name="id" type="java.lang.Integer">
        <column name="id" />
        <generator class="identity" />
    </id>
    <property name="city" type="String">
        <column name="city" not-null="true"/>
    </property>
    <property name="postalcode" type="Integer">
        <column name="postalcode" not-null="true"/>
    </property>
    <properties name="businessKey" unique="true">
        <property name="city"/>
        <property name="postalcode"/>
    </properties>
</class>

框架中是否有一个函数来检查给定组合的唯一键“businessKey”是否唯一(也适用于单列唯一约束)?

也许结合将“businessKey”映射到一个类?(类似于composite-id的使用)

如果确实可以自动完成,那么为每个表编写代码以检查其业务密钥就是如此多的冗余。

4

1 回答 1

1

natural Id它会自动创建模式创建的唯一约束,并可用于更有效地查询它。在xml中

<natural-id>
    <property name="name"/>
    <property name="org"/>
</natural-id>

naturalids 使用二级缓存效率更高,从 H4.1 加载时 naturalid 使用一级缓存,可以节省往返。除此之外,自然 id 就像普通属性一样。但是,您可以编写一个通用的自然 ID 检查器

  1. 使用属性集创建一个新对象
  2. 通过 sessionfactory 访问对象的类元数据
  3. 迭代自然 id 属性并使用它们从对象中获取值并将它们设置在 using(propertyname, propertyvalue)
  4. 如果发现某些东西,请复制数据,否则只需保存您刚刚创建的对象
于 2012-07-06T06:16:50.080 回答