如果父实体中的布尔标志设置为true
,Hibernate 3.6中是否有办法仅加载子实体?
例如:
@Entity
class Parent {
@OneToOne
private Child child;
private boolean loadChild;
}
因此,如果loadChild == false,则不应从db加载子项,并且始终将其为null,否则应加载(当然,如果可用)。当前,孩子非常渴望加载,因此最好保持这种状态。
尤其是,我们要防止的是孩子的实际负担以及可能对孩子造成的所有性能影响。加载它很容易,然后使用getter返回null,但这会通过加载实际不需要的子代而对性能产生影响。
我不确定JPA
和/或Hibernate
是否直接支持此功能。一种解决方法可以是:
将loadChild
下移至Child
,然后在@Where
中使用@Where
。
但是,在字段级别,Parent
仅适用于集合值属性。因此,您必须用@Where
包裹孩子,才能使Collection
工作。
@Where
进一步阅读:
[@Where(clause = "load_with_parent = true") // lets say the column name is load_with_parent
@OneToMany
private List<Child> childs;
中的@Where
请参阅此SO问题:Hibernate user guide