2017-06-13 64 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> 

子類的標籤下添加列表加入標籤確實允許內部列表。

相關問題