2017-06-13 37 views
0

我正在使用继承策略:表使用鉴别器的每个子类策略。使用鉴别器,不允许在每个子类的子类中使用

我的POJO类,如下

public abstract Class A{ 
... 
} 

public Class B extends A{ 
private List <D> collection 
...... 
} 

public Class C extends A{ 
.......... 
} 

public class D{ 
......... 
} 

Hibernate映射如下

<hibernate-mapping> 

<class name="A" entity-name="A" 
    abstract="true" discriminator-value="ABS_A" 
    table="A"> 
    <id name="id" type="java.lang.String"> 
     <column not-null="true" unique="false" name="`ID`" /> 
     </id> 
     <discriminator type="string"> 
     <column name="`ABS_A_DISCRIMINATOR`" index="A_discriminator" 
      length="255" not-null="true" /> 
     </discriminator> 
      ........................ 
     </class> 

     <subclass extends="A" entity-name="B" 
      name="B" 
      discriminator-value="B"> 

     <join table="B" fetch="select"> 
     <key><column name="ID" /></key> 
      <list name="collection" table="B_D" cascade="all" lazy="true"> 
     <key column="ID" /> 
     <list-index column="idx" /> 
      <many-to-many entity-name="D" unique="false"> 
      </many-to-many> 
       </list> 
      .................... 
     </join> 
     </subclass> 

     <subclass extends="A" entity-name="C" 
      name="C" 
      discriminator-value="C"> 

     <join table="C" fetch="select"> 
     <key><column name="ID" /></key> 
     ................ 
     </join> 
     </subclass> 

    <class name="D" entity-name="D" table="D"> 
    ..................... 
    </class> 
<hibernate-mapping> 

我得到下面的异常 元素类型的内容 “加入” 必须匹配“(子查询,评论,关键的,?(物业|多到一个|成分|动态组件|任何)?*,SQL插入,SQL更新,SQL-删除)”?

如果连接标签不允许list/set/idbag/bag,是否有任何其他方式来实现这一点..我来到这个问题,因为不必要的连接发生时,我没有歧视策略使用每个子类的表。

注意:严格地说我想要标准化的db模型。

提前感谢!...

回答

0

我们可以像下面

<subclass extends="A" entity-name="B" 
      name="B" 
      discriminator-value="B"> 

    <list name="collection" table="B_D" cascade="all" lazy="true"> 
     <key column="ID" /> 
     <list-index column="idx" /> 
     many-to-many entity-name="D" unique="false"> 
      </many-to-many> 
    </list> 

............... 
</subclass> 

子类的标签下添加列表加入标签确实允许内部列表。

相关问题