У меня уже есть база данных и отображение спящего режима.Есть центральная таблица и соответствующая сущность (PersistentObject
).Многие другие таблицы и сущности ссылаются на PersistentObject
через @ManyToOne
или @OneToOne
отображение.
Теперь я хотел бы сделать текущий PersistentObject
абстрактным и ввести два подкласса Sub1Object
и Sub2Object
, которые наследуются от PeristentObject
.
Я не могу изменить таблицу, в которой хранится PersistentObject
, иначе возможно добавление новых таблиц и т. Д.Таблица содержит достаточно информации, чтобы я мог использовать, например, @DiscriminatorColumn
для разделения строк Sub1Object
и Sub2Object
, если это необходимо.
Возможно ли внести это изменение, чтобы мои текущие запросы HQL по-прежнему работали без изменений?У меня много запросов, таких как from PersistentObject where foo = ?
и from OtherEntity other where other.persistentObject = ?
.Я хотел бы, чтобы эти запросы начали возвращать конкретные подклассы вместо суперкласса.Я не хочу кодировать отдельные запросы для Sub1Object
и Sub2Object
.
Возможно ли это вообще?Какую стратегию наследования мне следует использовать?