【发布时间】:2012-09-24 04:21:43
【问题描述】:
有一个只读的“目录”实体,它在表中预先配置了数据。 “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 表中的每个字段使用“公式”,但由于我有更多字段,因此效率不高。
在hibernate中有没有其他方法可以将关联实体的列映射到关联实体字段?
或
有没有更好的数据库设计来解决这个问题?
【问题讨论】:
-
你想解决什么“问题”?
-
我不明白你为什么推导出它。当Catalog的属性是只读的时候,派生它并让派生的实体属性可变(这也意味着它可以被创建和删除)肯定不是一个好主意。您是否注意到,当 BookCatalogs 派生自预先配置的 Catalog 时,您无法创建新的 BookCatalogs。可能你不需要......但是你可以使用正常的继承。
标签: hibernate hibernate-mapping