Извините, вчера я просто разместил фрагмент кода, концептуализированный из одноуровневого наследования. Проблема вы столкнулись вызвана
<discriminator column="type" type="string"/>
не может поставить под < подкласса > и < совместного подкласса > не может быть вложенными. Сегодня я пытаюсь запустить аналогичный код для достижения тех функций, которые вам могут понадобиться. Я попытался поставить < > под < подкласс > для имитации смежного подкласса < >, но < дискриминатор > не будет работать таким образом.
Таким образом, единственное, что я могу придумать, это сделать взаимную связь между животными и млекопитающими. Вот код, который я пробовал, может показаться неудобным для этой концепции.
<hibernate-mapping>
<class name="bean.Animal" table="animal">
<id name="id" type="java.lang.Integer">
<column name="id" length="50" scale="0" />
</id>
<many-to-one name="mammal"
column="mammal_id"
not-null="true"/>
</class>
<class name="bean.Mammal" table="mammal">
<id name="mammal_id" type="java.lang.Integer">
<column name="mammal_id" length="50" scale="0" />
</id>
<discriminator column="type" type="string"/>
<subclass name="bean.Dog" extends="bean.Mammal" discriminator-value="dog">
</subclass>
<subclass name="bean.Cat" extends="bean.Mammal" discriminator-value="cat">
</subclass>
</class>
И стол результата:
+------------------------------+
|Tables |
+------------------------------+
|animal |
|mammal |
+------------------------------+
И схемы в этих таблицах
+------------------------------+
|animal |
+------------------------------+
|id |
|mammal_id |
+------------------------------+
+------------------------------+
|mammal |
+------------------------------+
|mammal_id |
|type |
+------------------------------+
Надеется, что это поможет. Кстати, мне все еще интересно, в чем причина, почему вы не используете аннотацию для решения этой проблемы, поскольку у вас есть решение, просто любопытно :).
Вы попробовали запустить подобное сопоставление? Мой вывод останавливается на 'ERROR ErrorLogger: 57 - Ошибка синтаксического анализа XML (215): содержимое типа элемента« join-subclass »должно соответствовать« (meta *, subselect? '... –