2010-09-08 96 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'。