Разделение файлов конфигурации Hibernate (файлов hbm.xml) при использовании подклассов - PullRequest
2 голосов
/ 15 сентября 2011

у нас есть файл отображения hibernate (файл hbm.xml), который отображает часть нашего домена в базу данных. Эта часть содержит иерархию наследования. То есть у нас есть родительский класс 'Parent' и несколько подклассов 'Child1', 'Child2', ...

Из-за структуры файла отображения гибернации дочерние классы расположены в родительском <class> теге XML как <joined-subclass>.

Поскольку этот файл сопоставления становится все больше и больше, мы теперь хотим разделить его. Есть ли способ иметь файл сопоставления для каждого подкласса?

Ответы [ 2 ]

3 голосов
/ 15 сентября 2011

Тег в новом XML:

<joined-subclass />

Или

<hibernate-mapping>
 <subclass name="DomesticCat" extends="Cat" discriminator-value="D">
      <property name="name" type="string"/>
 </subclass>
 </hibernate-mapping>

Извлечено с сайта гибернации:

It is possible to define subclass, union-subclass, and joined-subclass mappings in separate mapping documents directly.

Ссылка: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/inheritance.html

Удо

0 голосов
/ 15 сентября 2011

Вы можете использовать определения ENTITY в своем XML:

В своем основном файле hbm.xml:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" [
    <!ENTITY subclass1 SYSTEM "classpath://my/hbms/subclass1.xml">
    <!ENTITY subclass2 SYSTEM "classpath://my/hbms/subclass2.xml">
    ]>

<hibernate-mapping>
<class name="my.pkg.Parent">
         ...
         &subclass1;
         &subclass2;
</class>

И мой / hbms / subclass1.xml:

<joined-subclass name="subclass1">
    <!-- all the subclass definitions -->
</joined-subclass>

И мой / hbms / subclass2.xml:

<joined-subclass name="subclass2">
    <!-- all the subclass definitions -->
</joined-subclass>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...