我有一個實體層次結構,我想在兩個不同的模式中重用。在兩個模式中重用JPA實體層次結構
[Parent1] [Parent2]
\1 1/
\ /
\0..* 0..*/
[ChildSuperclass] -- @Inheritance(SINGLE_TABLE)
^
/_\
_________|_________
| |
[ChildSubclass1] [ChildSubclass2]
我想有四個表:
PARENT1
CHILD1
PARENT2
CHILD2
其中CHILD1和CHIL D2被映射爲可以共享類層次和實現。理想情況下,PARENT1/CHILD1和PARENT2/CHILD2將處於單獨的模式中,但我必須使用單個持久單元。
我需要一個與超類的關係,所以它看起來像@MappedSuperclass不是一個選項。 (但是,家長1沒有而不是需要參考家長2的孩子,反之亦然。)
這可能嗎?
看起來像這樣:https://forum.hibernate.org/viewtopic.php?p=2419646 但我不得不使用JPA註釋。 Hibernate特定的註釋是一個選項,但XML不是。
如果我想爲每個模式創建不同的子類,我也無法看到多重繼承的方法。用接口分離類層次結構是我的最後手段。
更新希望我可以澄清一個更具體的例子。
[RedPerson] [BluePerson]
\1 1/
\ /
\0..* 0..*/
[Automobile] -- @Inheritance(SINGLE_TABLE)
^
/_\
_________|_________
| |
[Sedan] [PickupTruck]
由於商業原因,紅人和藍人需要有完全獨立的表格和數據。如果只有一種類型的汽車,那麼我可以將其製作成映射超類,並擁有PinkAuto和BlueAuto。我的問題是如何在保留層次結構的同時做到這一點。這有幫助嗎?
這有點令人困惑。你爲什麼在這裏需要'ChildSuperClass'? – Jeremy
我希望每個家長使用鑑別器列引用幾個可能的子類型中的任何一個。 (你如何代表沒有超類的類層次結構?) –
啊,對不起。我錯讀了你的圖表。 – Jeremy