在复合键hibernate xml中映射复合键

Org*_*cat 2 java hibernate hibernate-mapping

这就是我想要做的,将对象映射到具有相同主键的另一个表.下面是一个例子,基本上我有一个带有复合键的对象,它有一个复合键用于ANOTHER表,但我不知道如何包含它们以创建正确的对象键.我突出显示了错误的行,它只包含该键的一个属性.

  <class name="BusinessRuleObject" table="BUSINESS_RULE_OBJECTS" schema="DB">
    <composite-id name="businessRuleObjectId" class="BusinessRuleObjectId">
      <key-property name="sameIdCode" column="ID_CD" />
      **<key-many-to-one name="businessRule" class="BusinessRule" column="BUSINESS_RULE" />**
    </composite-id>
    <!-- ... STUFF GOES HERE -->
  </class>

  <class name="BusinessRule" table="BUSINESS_RULE_STRINGS" schema="DB">
    <composite-id name="businessRule2ID" class="BusinessRule2ID">
      <key-property name="sameIdCode" column="ID_CD" />
      <key-property name="businessRuleCode" column="BUSINESS_RULE" />
    </composite-id>
    <!-- TOTALLY DIFFERENT STUFF GOES HERE -->
   </class>
Run Code Online (Sandbox Code Playgroud)

Joe*_*don 5

businessRule包含复合外键的一个属性,因为<key-many-to-one它只声明一列BUSINESS_RULE.它应该宣布它引用的复合键的两个列BUSINESS_RULE,并ID_CD在你的榜样.通过将ID_CD列添加到<key-many-to-one元素,您需要删除或重命名<key-property name="sameIdCode" column="ID_CD" />元素列.

该协会<key-many-to-onebusinessRule对象应当映射是这样的:

<composite-id name="businessRuleObjectId" class="BusinessRuleObjectId"> 

  <key-many-to-one name="businessRule" class="BusinessRule" >
     <column name="ID_CD" />
     <column name="BUSINESS_RULE" />
  </key-many-to-one>

</composite-id> 
Run Code Online (Sandbox Code Playgroud)

Hibernate参考文档
5.1.7.composite-id
组件作为复合标识符