2010-09-08 47 views
0

我有存儲在一個簡單的「代碼」表結構如下(所有存儲爲字符型字段)幾個簡單的實體:如何使用Hibernate將實體映射到公共表?

code_fieldname pk 
code_value  pk 
code_comment 
code_field1 
code_field2 

一個我試圖地圖對象數據存儲在該表以下形式

code_fieldname = "segment" 
class = Segment 
segment.id = code_value 
segment.name = code_comment 
segment.markup = code_field1 (decimal property) 

的於是段記錄所有具有「code_fieldname」 =「段」以及它們的ID爲的「code_value」的值。

這種結構的映射是什麼?我正在使用基於XML的映射。

回答

0

我已經設法解決這個問題,首先使用類的繼承,然後使用關係的公式屬性。爲實體定義如下:

<class name="GeneralCode" table="code_mstr"> 
    <composite-id name="key"> 
    <key-property name="key" column="code_fieldName" type="string"/> 
    <key-property name="value" column="code_value" type="string"/> 
    </composite-id> 
    <discriminator column="code_fieldName" type="string" insert="false"/> 
    <subclass name="Segment" discriminator-value="segment"> 
    <property name="name" type="string" column="code_comment"/> 
    </subclass> 
</class> 

現在我可以像下面這樣的關係,使用這樣的:

<many-to-one name="segment" class="Segment" 
      lazy="false" insert="false" update="false"> 
    <formula>'segment'</formula> 
    <column name="segment"/> 
</many-to-one> 

注意該公式需要引用'部分的價值,因爲這始終是場關鍵,即所有情況下的code_fieldname ='segment'。

相關問題