【问题标题】:JPA Secondary Table XML ConfigJPA 辅助表 XML 配置
【发布时间】:2011-10-11 20:08:11
【问题描述】:

我正在做一个项目,我需要存储一个不可修改的实体(来自库),所以我使用 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>

但是,一旦我添加 &lt;secondarytable&gt;,我就会收到一个错误,这本身就很容易解释:

  • 14:58:47,379 错误 ErrorLogger:57 - 解析 XML 时出错 (2) : cvc-complex-type.3.1:元素的属性“版本”的值“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”:版本, “http://java.sun.com/xml/ns/persistence/orm”:多对一, “http://java.sun.com/xml/ns/persistence/orm”:一对多, “http://java.sun.com/xml/ns/persistence/orm”:一对一, “http://java.sun.com/xml/ns/persistence/orm”:多对多, “http://java.sun.com/xml/ns/persistence/orm”:嵌入, "http://java.sun.com/xml/ns/persistence/orm":transient}' 是预期的。
  • 14:58:47,379 错误 ErrorLogger:57 - 解析 XML 时出错 (2) : cvc-complex-type.2.4.a:发现无效内容以 元素“辅助表”。之一 '{"http://java.sun.com/xml/ns/persistence/orm":description, "http://java.sun.com/xml/ns/persistence/orm":id-class, "http://java.sun.com/xml/ns/persistence/orm":exclude-default-listeners, "http://java.sun.com/xml/ns/persistence/orm":exclude-superclass-listeners, “http://java.sun.com/xml/ns/persistence/orm”:实体监听器, "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”:删除后, “http://java.sun.com/xml/ns/persistence/orm”:更新前, “http://java.sun.com/xml/ns/persistence/orm”:更新后, “http://java.sun.com/xml/ns/persistence/orm”:加载后, "http://java.sun.com/xml/ns/persistence/orm":attributes}' 是预期的。

我和其他人从春季 3.0.5 开始在路上

  • hibernate-entitymanager-3.6.2
  • hibernate-jpa-2.0-api
  • hibernate-core-3.6.2.Final

【问题讨论】:

    标签: jpa


    【解决方案1】:

    根据 orm-schema

    辅助表元素喜欢放置 与

    table标签后的实体元素

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

    同意错误消息很嘈杂,但那是 光荣的架构规范。

    是的。

    【讨论】:

    • 它告诉我的是我可以为实体创建辅助表,但如果 enetity 是通过 定义的层次结构的一部分,它无法控制超类中的属性进入辅助表。
    猜你喜欢
    • 1970-01-01
    • 2012-08-25
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 2015-04-12
    相关资源
    最近更新 更多