page documenting the eclipselink-orm.xml
file部分说:
此映射文件可用于代替JPA的标准映射文件,或可用于覆盖JPA映射文件。
我对后者感兴趣,而不是前者。
因此,我将以下内容放在我的META-INF/persistence.xml
文件中:
<mapping-file>META-INF/my-orm.xml</mapping-file>
<mapping-file>META-INF/my-eclipselink-orm.xml</mapping-file>
他们被接受了。
现在,请注意我不希望my-eclipselink-orm.xml
的内容成为my-orm.xml
内容的超集。我只想在其中放置必要的最低限度的XML(在语义上)将某些特定于EclipseLink的功能添加到my-orm.xml
中指定的给定映射中。
现在假设我<one-to-many>
中的my-orm.xml
映射名为names
。 (基本的,基本的东西。)
现在假设my-eclipselink-orm.xml
我想在语义上将<batch-fetch>
元素添加到该映射中。
如果我这样做:
<entity class="the.entity.class.in.Question">
<attributes>
<one-to-many name="names">
<batch-fetch size="10" type="JOIN"/>
</one-to-many>
</attributes>
</entity>
...然后EclipseLink对我大吼:
Conflicting XML elements [<one-to-many>] with the same name [names] were found. The first was found in the mapping file [file:/Users/ljnelson/Projects/foo/target/classes/META-INF/my-eclipselink-orm.xml] and the second in the mapping file [file:/Users/ljnelson/Projects/foo/target/classes/META-INF/my-real-orm.xml]. Named XML elements must be unique across the persistence unit.
那么如何使用orm.xml
覆盖“真实”eclipselink-orm.xml
的仅部分?
答案 0 :(得分:0)
这种情况见例6-4: http://www.eclipse.org/eclipselink/documentation/2.6/jpa/extensions/schema.htm
由于显式列出了my-eclipselink-orm.xml,因此将其视为JPA orm.xml文件。您需要将文件重命名为eclipselink-orm.xml并从persistence.xml中删除标记,以便您的情况与示例6-3匹配。文档声明它应该合并映射,但是这一点的例子并不清楚。