如何使用Hibernate将实体映射到公共表?

时间:2010-09-08 05:19:18

标签: java 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”=“segment”,其ID是“code_value”的值。

这种结构的映射是什么?我正在使用基于XML的映射。

1 个答案:

答案 0 :(得分: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'。

相关问题