是否可以配置Hibernate以將組件類存儲在單獨的表中?將休眠組件映射到單獨的表
看看下面的例子:
<class name="test.ClassA">
<property name="propA"/>
<component name="componentProp" class="test.ClassB">
<property name="propB"/>
</component>
</class>
這映射到表有兩列propA
和propB
稱爲MyClass
。我想要的是將組件的屬性映射到名爲ClassB
的表。
我不要做的就是配置ClassB
本身作爲一個實體(它有ClassA
外沒有意義的身份),這樣排除了正常的關聯。另外,我無法修改對象模型(它是生成的代碼),因此我無法將ID屬性引入ClassB
。
這似乎是Hibernate功能上的一個缺陷 - <組件映射執行「多個類到一個表」,並且聯接>執行「一個類到多個表」,但是奇怪的是,沒有采取實體關聯的方式,沒有明顯的方式來實現「多個類到多個表」。
我想要這樣做的基本原理是,我希望我的數據庫模式儘可能接近地類似於對象模型,並且包含ClassB
組件的單獨表格。我知道這不會擴展 - 例如,你不能嵌套組件,但在這種特殊情況下這不是問題。
啊,那看起來就是我所需要的,謝謝。我會帶她出去看看是否是票。 – skaffman 2009-09-14 17:13:28
我發現這項技術記載在「Java持久性與休眠」第8.1.3節中。聽起來很健康。再次感謝。 – skaffman 2009-09-21 16:35:04
謝謝。我以某種方式設法從來沒有讀過這本書:-) – ChssPly76 2009-09-21 16:44:56