一尘不染

休眠映射设置lazy ='false'

hibernate

在hibernate映射中,我设置了属性lazy="false",这将获取父级的所有子级记录。

整个应用程序都在使用它。
这在我的应用程序的特定模块上造成了性能问题,我只想在其中获取父记录。

由于无法在其他许多地方使用该lazy属性,true因此我无法将其更改为。有没有办法来解决这个问题?

请让我知道是否需要更多信息。


阅读 271

收藏
2020-06-20

共1个答案

一尘不染

这些在hibernate状态并不具有这种功能,因为它尊重您的习惯lazy="false"。因此,我建议解决您的需求的方法是用另一个虚拟的具体类扩展您的查询类,并为其中没有该子类关联的类定义映射。

假设您有父类与子级映射

class Parent{

     private List<Child> kids;

}

和映射为您拥有的父母是

<class name="Parent" table="PARENT">
// other properties
// child mapping
   <set name="kids" table="KIDS" lazy="false">
       <key column="parent_id"/>
       <one-to-many class="Child"/>
   </set>
</class>

然后您可以创建另一个扩展父类的类

class MinimalParent extends Parent{
   // leave implementation as blank
}

然后将其映射为波纹管

<class name="MinimalParent" table="PARENT">
    // other properties
    // do not map child in this
</class>

MinimalParent在只需要父对象的地方使用此类。希望你明白了!

2020-06-20