基于布尔标志在Hibernate中加载子实体

问题描述 投票:1回答:1

如果父实体中的布尔标志设置为true,Hibernate 3.6中是否有办法仅加载子实体?

例如:

@Entity
class Parent {
  @OneToOne
  private Child child;
  private boolean loadChild;
}

因此,如果loadChild == false,则不应从db加载子项,并且始终将其为null,否则应加载(当然,如果可用)。当前,孩子非常渴望加载,因此最好保持这种状态。

尤其是,我们要防止的是孩子的实际负担以及可能对孩子造成的所有性能影响。加载它很容易,然后使用getter返回null,但这会通过加载实际不需要的子代而对性能产生影响。

java hibernate hibernate-mapping
1个回答
0
投票

我不确定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

© www.soinside.com 2019 - 2024. All rights reserved.