Карта гибернации объявлена ​​в абстрактном классе, не наследуется в подклассах - PullRequest
0 голосов
/ 19 августа 2011

У меня есть абстрактный класс A и два класса B и C, реализующие A.

abstract class A implements Serializable {
  Long id
  String code
  String description
  Map<Locale, String> localizedDescriptions 
}

class B implements A {}

class C implements A {}

Со следующим отображением гибернации:

<class name="A" abstract="true">

    <id name="id">
        <generator class="org.hibernate.id.enhanced.TableGenerator"/>
    </id>

    <property name="code" unique="true" not-null="true"/>
    <property name="description" not-null="true"/>

    <map name="localizedDescriptions" lazy="false">
        <key property-ref="code" column="code"/>
        <index column="locale" type="locale"/>
        <element column="description" type="string" not-null="true"/>
    </map>

    <union-subclass name="B"/>
    <union-subclass name="C"/>

Таблицы базы данных B и C, которые я получаю, имеют поля id, code и description, как и ожидалось. Однако нет таблиц b_localized_description или c_localized_description, но есть таблица a_localized_description, чего я не хочу Итак, возможно ли иметь желаемое поведение без определения карты для каждого подкласса?

1 Ответ

0 голосов
/ 19 августа 2011
<union-subclass name=”C”>
<property name=”salary” column=”SALARY” />
<property name=”bonus” column=”BONUS” />
</union-subclass>

Укажите свойства в теге XML подкласса объединения, которые вы хотели бы включить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...