0

有一个只读的“目录”实体,它在表中预先配置了数据。“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 和 b,我需要通过“base_catalog”字段进行访问。

我更喜欢将 BookCatalog 作为 Catalog 的子类,并从“CATALOG”只读表中映射属性 a 和 b。

我知道我可以对 CATALOG 表中的每个字段使用“公式”,但由于我有更多字段,因此效率不高。

休眠中有没有其他方法可以将关联实体的列映射到关联实体字段?

或者

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

4

1 回答 1

0

I believe you can use <component> as below :

<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>
于 2012-10-08T04:26:35.753 回答