2011-08-15 72 views
2

這就是我想要做的,將一個對象映射到另一個具有相同主鍵的表。下面是一個例子,基本上我有一個對象具有複合鍵,它具有ANOTHER表的組合鍵,但我不知道如何包含這兩個以創建正確的對象鍵。我突出顯示了錯誤的那一行,它只包含了密鑰的一個屬性。在組合鍵中映射組合鍵hibernate xml

<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> 
+0

是那裏之間的任何主/從關係兩個? –

+0

不,對於所有意圖和目的,除了非主鍵數據外,它們可以是同一個表。 – Organiccat

回答

5

只有一個複合外鍵businessRule的特性包括,因爲只有<key-many-to-one聲明一列BUSINESS_RULE。它應該聲明它在您的示例中引用BUSINESS_RULEID_CD的組合鍵的兩列。通過將ID_CD列添加到<key-many-to-one元素,您需要刪除或重命名元素列<key-property name="sameIdCode" column="ID_CD" />

關聯<key-many-to-onebusinessRule對象應該被映射是這樣的:

Hibernate參考documenation
5.1.7. composite-id
Components as composite identifiers