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

Java 是否将实体(XML)的默认提取策略设置为LAZY?,java,jpa,openjpa,Java,Jpa,Openjpa,我在XML持久性文件中定义了一个实体,如下所示。讨论中的实体/表有100多个字段,但我只需要少数字段。与其用fetch=“LAZY”属性标记我不需要的所有字段,我是否可以使此表的所有列的默认获取策略都是LAZY的,并且只将我需要的字段标记为fetch=“eanger” 我查看了打开的JPA文档,但没有看到任何与此相关的参考。这在XML实体映射中可能吗 <entity class="Users"> <table schema="dbo" name="Users"/

我在XML持久性文件中定义了一个实体,如下所示。讨论中的实体/表有100多个字段,但我只需要少数字段。与其用fetch=“LAZY”属性标记我不需要的所有字段,我是否可以使此表的所有列的默认获取策略都是LAZY的,并且只将我需要的字段标记为fetch=“eanger”

我查看了打开的JPA文档,但没有看到任何与此相关的参考。这在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>

您所追求的似乎是实体图

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

或者,您可以使用一个fetch图(显式列出您感兴趣的属性)来控制每个查询的fetch模式


实体图规范中令人困惑的部分是,基本字段也需要显式标记为急切获取,尽管如此(至少就基于注释的配置而言),
basic.fetch
属性的默认值已经是
FetchMode.EAGER
。我不知道基于XML的配置会有什么样的行为,所以我建议您使用fetch-graph方法,并确保它实际工作

抓取只处理实体本身的关系字段,所以如果您与另一个实体有关系,您可以延迟抓取它,但我认为您不能为实体这样做fields@mibrahim.iti,可以使用
@basic(fetch=FetchType.lazy)
(或