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