2009-06-19 67 views
0

我有一個表示一個表的域對象類。這個類與另一個表有關聯,但是源類的屬性與目標類的屬性沒有相同的名稱,我不知道如何休眠映射它。如何在Hibernate中映射一組對象而不用主鍵同名?

下面是類的一個例子爲具有集(一個CT許多ř實例):

public class CT { 
    // This is the property in the property-ref down below 
    private String b; 

    // The set of Rs I want to get - there may be none that correspond to a CT instance. 
    private Set rs; 
} 

public class R { 
    // This property is mapped to the column name below. 
    private String rBc; 
} 

<!--Snippet of the mapping for class CT--> 

<set name="rs" lazy="true" sort="MyComparator" table="R" > 
     <key column="R_COLUMN_NAME_THAT_REPRESENTS_THE_RELATIONSHIP" property-ref="b" /> 
     <one-to-many class="CLASS_THAT_R_IS" /> 
</set> 

休眠接受此映射,但是當我拉起集合Rs的從CT實例我知道應該存在,我只是得到一個空的PersistentSet。

請注意,每個CT實例可能沒有或多於一個R是完全可能的。這就是爲什麼我有比較器在那裏 - 我無法弄清楚如何輕鬆地告訴Hibernate如何執行沒有顯式SQL的ORDER BY子句(我在Hibernate映射中猶豫不決)。

難道某人幫助我在這裏?

+0

我沒有清楚地知道對象的一面,你能說更多關於對象在對象一邊做什麼嗎? CT和R的生命週期和所有權狀況? 我已經成功地將我的所有藏品編寫成多對一。在多對一和一對多之間你可以做什麼似乎有區別。 – PanCrit 2009-06-19 17:11:42

回答

0

這個問題可能與在<set ..>映射。這告訴hibernate使用連接表而不是直接在子表中查找外鍵。從命名我知道你是沒有使用連接表,這是正確的嗎?

相關問題