有一个只读的'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中是否还有其他方法可以将关联实体的列映射到关联实体字段?
或
有没有更好的数据库设计来解决这个问题?
答案 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>