为实体(XML)将默认提取策略设置为LAZY?

时间:2017-03-07 20:43:44

标签: java jpa openjpa

我在XML持久性文件中定义了一个实体,如下所示。有问题的实体/表有100多个字段,但我只需要少数几个字段。而不是用fetch =" LAZY"标记我不需要的所有字段。属性,我可以为这个表的所有列设置默认的提取策略是LAZY,只标记我需要的那些作为fetch =" EAGER" ?

我通过Open JPA文档here查看,但我没有看到任何对此的引用。这可能在XML实体映射中吗?

<entity class="Users">
        <table schema="dbo" name="Users"/>
        <attributes>
            <id name="id">
                <column name="Id" column-definition="nchar" length="18"/>
            </id>
            <basic name="about" fetch="LAZY">
                <column name="About" column-definition="nvarchar" length="1000"/>
            </basic>
            <basic name="accountId">
                <column name="AccountId" column-definition="nchar" length="18"/>
            </basic>
            <basic name="alias">
                <column name="Alias" column-definition="nvarchar" nullable="false" length="8"/>
            </basic>
            <basic name="auditCounter">
                <column name="AuditCounter"/>
            </basic>
            <basic name="auditPercent">
                <column name="AuditPercentc"/>
            </basic>
            <basic name="auditTarget">
                <column name="Audit"/>
            </basic>
            <basic name="CenterId">
                <column name="CenterId" column-definition="nchar" length="18"/>
            </basic>
       </attributes>
    </entity>

1 个答案:

答案 0 :(得分:0)

实体图似乎就是你所追求的。

https://docs.oracle.com/javaee/7/tutorial/persistence-entitygraphs001.htm

上述链接意味着您可以标记需要提取的字段,然后在查询中使用空的加载图。

或者,您可以使用获取图表,明确列出您感兴趣的属性,以基于每个查询控制获取模式。

关于实体图规范的令人困惑的部分是,基本字段也需要明确标记为急切提取,尽管如此(至少基于注释的配置),{{1}的默认值} property已经Basic.fetch。我不知道基于XML的配置会有什么样的行为,因此我建议您使用fetch graph方法并确保它确实有效。