У меня есть иерархия сущностей, которую я хотел бы использовать в двух разных схемах.
[Parent1] [Parent2]
\1 1/
\ /
\0..* 0..*/
[ChildSuperclass] -- @Inheritance(SINGLE_TABLE)
^
/_\
_________|_________
| |
[ChildSubclass1] [ChildSubclass2]
Я бы хотел иметь четыре стола:
PARENT1
CHILD1
PARENT2
CHILD2
где CHILD1 и CHILD2 отображаются так, что иерархия классов и реализация могут быть общими. В идеале 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. Мой вопрос заключается в том, как сделать то же самое, сохранив иерархию. Это помогает?