将关联实体的列映射到关联实体字段

时间:2012-09-24 04:21:43

标签: hibernate hibernate-mapping

有一个只读的'Catalog'实体,它在表中有预先配置的数据。 'BookCatalog'是另一个与'Catalog'表有多对一关系的实体。

目前我的配置文件如下,

<!--Catalog -->
<class name="xxxx.Catalog" table="CATALOG" mutable="false">
   ....
   ....
   <property name="a" type="string">
      <column name="A" />
   </property>
   <property name="b" type="string">
      <column name="B" />
   </property>
</class>

<!-- Book Catalog -->
<class name="xxxx.BookCatalog" table="BOOK_CATALOG">
    ....
    ....
    <many-to-one name="base_catalog" class="xxxx.Catalog" fetch="select">
        <column name="BASE_CATALOG_ID" length="36" />
    </many-to-one>

    <property name="c" type="string">
      <column name="C" />
   </property>
</class>

目前,如果我想访问只读属性a&amp; b,我需要通过'base_catalog'字段访问。

我更喜欢将BookCatalog作为Catalog的子类并映射属性a&amp; b来自'CATALOG'只读表。

我知道我可以为CATALOG表中的每个字段使用'formula',但由于我有更多字段,因此效率不高。

hibernate中是否还有其他方法可以将关联实体的列映射到关联实体字段?

有没有更好的数据库设计来解决这个问题?

1 个答案:

答案 0 :(得分:0)

我相信您可以使用<component>,如下所示:

<class name="xxxx.BookCatalog" table="BOOK_CATALOG" mutable="false">
  <property name="c" type="string">
    <column name="C" />
  </property>
  <component name = "xxxx.Catalog">
    <property name="a" type="string">
      <column name="A" />
    </property>
    <property name="b" type="string">
      <column name="B" />
    </property>
 </component>
</class>