Система, над которой я работаю, имеет объект домена с именем Заказ , который наследуется от AbstractPersistentObject . Теперь мне нужно добавить еще один объект домена с именем ExternalOrder , который имеет некоторые свойства Order, но не все. Я хотел бы, чтобы эти два объекта рассматривались полиморфно в определенных местах. Поэтому я думаю о реализации отображения наследования.
Я создал AbstractOrder , который теперь расширяет AbstractPersistentObject и перемещает общие свойства в AbstractOrder. Order и ExternalOrder теперь расширяют AbstractOrder.
Поскольку таблица «Заказ» уже содержит много данных в базе данных, я бы предпочел не вносить слишком много изменений в схему.
Если я опущу InheritanceType.SINGLE_TABLE, какая стратегия наследования будет для меня лучше? Я должен упомянуть, что должен использовать объединение OnetoMany хотя бы в одном объекте домена. Доменный объект будет ссылаться на AbstractOrder, а Hibernate будет определять во время выполнения конкретный подкласс для этого AbstractOrder.
AbstractPersistentObject имеет @Id и @GeneratedValue (стратегии = GenerationType.IDENTITY) для ID свойства. Есть ли способ переопределить это, когда я реализую наследование? Как я понимаю, GenerationType.IDENTITY не будет работать для определенных вариантов наследования, и я не уверен, как это переопределить. Я посмотрел на @ AttributeOverride , но я думаю, что это полезно, только если вы хотите переопределить определенные значения @Column.