2011-07-23 27 views
0

我工作的一個項目,我需要存儲一個實體,它是不可修改的(從庫),所以我用XML實體映射實體對象是這樣的:JPA二級表XML配置

public abstract class BaseModel{ 
    Long uid; 
    //getters/setters 
} 

public abstract class LocaleBaseModel{ 
    String locale; 
    //Other properties, getter/setters 
} 

public class Article extends LocaleBaseModel{ 
    private Long authorId; 
    privaet String text; 
    //Other properties   
} 

<mapped-superclass class="package.BaseModel"> 
    <attributes> 
     <id name="uid"> 
      <column name="UID" nullable="false" /> 
      <generated-value strategy="AUTO" /> 
     </id> 
    </attributes> 
</mapped-superclass> 
<mapped-superclass class="package.LocaleBaseModel"> 
    <secondary-table name="STableName"> 
     <primary-key-join-column name="MID" referenced-column-name="UID" /> 
    </secondary-table> 
    <attributes> 
     <basic name="locale"> 
      <column name="LOCALE" updatable="false" nullable="false" /> 
     </basic> 
     <basic name="text"> 
      <column name="Text" updatable="false" nullable="false" table="STableName" /> 
     </basic> 
    </attributes> 
</mapped-superclass> 

<entity class="package.child.Article" name="Hadith"> 
    <table name="TableName" /> 
    <attributes> 

    </attributes> 
</entity> 

但只要我添加<secondarytable>我得到一個錯誤,這是寧靜的解釋本身:

  • 14:58:47379 ERROR ErrorLogger:57 - 錯誤解析XML(2): CVC-複雜type.3.1 :元素012的屬性'版本'的值'2.0'「實體映射」對於相應的 屬性使用無效。屬性'版本'具有固定值'1.0'。
  • 14:58:47,379錯誤ErrorLogger:57 - 解析XML的錯誤(2): cvc-complex-type.2.4.a:發現無效的內容,以 元素的「元素集合」開頭。 '{「http://java.sun.com/xml/ns/persistence/orm":basic, 」http://java.sun.com/xml/ns/persistence/orm":version, 「http://java.sun.com/xml/ns/persistence/orm":many-to-one, 」http://java.sun.com/xml/ns/persistence/orm":one- 「http://java.sun.com/xml/ns/persistence/orm":one-to-one, 」http://java.sun.com/xml/ns/persistence/orm 「:多對多, 」http://java.sun.com/xml/ns/persistence/orm":embedded, 「http://java.sun.com/xml/ns/persistence/orm 「:transient}」是預期的。
  • 14:58:47,379錯誤ErrorLogger:57 - 解析XML時出錯(2): cvc-complex-type.2.4.a:發現無效內容,以 元素的'secondary-table'開頭。 '{「http://java.sun.com/xml/ns/persistence/orm":description, 」http://java.sun.com/xml/ns/persistence/orm":id-類, 「http://java.sun.com/xml/ns/persistence/orm":exclude-default-listeners, 」http://java.sun.com/xml/ns/persistence/orm「:排除超類偵聽器, 「http://java.sun.com/xml/ns/persistence/orm":entity-listeners, 」http://java.sun.com/xml/ns/persistence/orm 「:pre-persist, 」http://java.sun.com/xml/ns/persistence/orm":post-persist, 「http://java.sun.com/xml/ns/persistence/orm 「:pre-remove, 」http://java.sun.com/xml/ns/persistence/orm":post-remove, 「http://java.sun.com/xml/ns/persistence/orm 「:更新前, 」http://java.sun.com/xml/ns/persistence/orm「:更新後, 」http://java.sun.com/xml/ns/persistence/orm":post-load, 「http://java.sun.com/xml/ns/persistence/orm「:attributes}'是預期的。

我已經從彈簧3.0.5

  • 休眠-的EntityManager-3.6.2
  • 冬眠-JPA-2.0-API
  • 冬眠核以下路徑上,與其他人-3.6.2。最終

回答

0

根據ORM型模式

次級表元素喜歡被放置 表標籤

<pre> alike &lt;entity> 
     &lt;table/> 
     &lt;secondary-table/> 
     ... 

商定的錯誤後withing的

實體元件信息很嘈雜,但是這是光榮的模式規範 。

ys。

+0

它暗示我的是我可以有一個實體的輔助表,但如果enetity是通過定義的層次結構的一部分,它無法控制超類的屬性進入輔助表。 –