我有一个实体层次结构,我想在两个不同的模式中重用。在两个模式中重用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