2011-09-15 44 views
2

我们有一个hibernate映射文件(hbm.xml文件),它将我们域的一部分映射到数据库。这部分包含一个继承层次结构。即我们有一个父类'Parent'和几个子类'Child1','Child2',...使用子类时分割Hibernate配置文件(hbm.xml文件)

由于hibernate映射文件的结构,子类位于父代<class> XML标记<joined-subclass>内。

由于这个映射文件变得越来越大,我们现在想分割它。有没有办法为每个子类创建一个映射文件?

回答

3

在新的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

您可以在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>