Можно ли настроить Hibernate для хранения класса компонента в отдельной таблице?
Возьмите следующий пример:
<class name="test.ClassA">
<property name="propA"/>
<component name="componentProp" class="test.ClassB">
<property name="propB"/>
</component>
</class>
Отображается в таблицу с именем MyClass
с двумя столбцами propA
и propB
. Я хочу сопоставить свойства компонента с таблицей с именем ClassB
.
То, что я не хочу сделать, это настроить ClassB
как саму сущность (у нее нет значимой идентичности за пределами ClassA
), так что исключается нормальная связь. Кроме того, я не могу изменить объектную модель (это сгенерированный код), поэтому я не могу ввести свойство ID для ClassB
.
Кажется, это пробел в функциональности Hibernate - отображение выполняет «несколько классов к одной таблице», а - «один класс к нескольким таблицам», но странно нет очевидного способа сделать «несколько классов-нескольким таблицам», не прибегая к связям сущностей.
Мое обоснование для этого заключается в том, что я хочу, чтобы моя схема БД напоминала объектную модель настолько близко, насколько это практически возможно, и включает в себя отдельные таблицы для компонента ClassB
. Я понимаю, что это не будет масштабироваться - вы не могли бы, например, создавать вложенные компоненты, но это не проблема в данной конкретной ситуации.