无法通过orm.xml覆盖EclipseLink批量提取类型

时间:2018-01-08 11:32:56

标签: jpa eclipselink

我有一个与B类有一对多关系的A类。它看起来像这样:

@OneToMany(cascade = CascadeType.REFRESH, fetch = FetchType.LAZY)
@JoinColumn(name = "B_A_ID", referencedColumnName = "A_ID", 
insertable = false, updatable = false)
private List<B> bElements;

由于this EclipseLink错误,我需要将此属性的批量提取类型更改为EXISTS或IN,但我没有接受类的源代码,因此我决定不使用@BatchFetchType注释通过我的orm.xml文件来完成它。

<entity class="somepackage.A">
    <attributes>
        <one-to-many name="bElements" fetch="LAZY">
            <join-column name="B_A_ID" referenced-column-name="A_ID" insertable="false" updatable="false"/>
            <cascade>
                <cascade-refresh/>
            </cascade>
            <batch-fetch type="EXISTS"/>
        </one-to-many>
    </attributes>
</entity>

问题是它不起作用。我可以改变映射的其他属性,例如。将类型提取到EAGER,但是当我尝试将批量提取类型更改为EXISTS或IN时,它似乎被忽略了。造成这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

我猜您使用的是JPA orm.xlm而不是EclipseLink orm.xlm

请检查您的xmlns补丁,它应该为http://www.eclipse.org/eclipselink/xsds/persistence/ormhttp://java.sun.com/xml/ns/persistence/orm