【发布时间】:2019-01-23 11:30:17
【问题描述】:
我有一个与自身有关联的递归实体。
@Entity
public class Function {
(...)
@ManyToMany(fetch = FetchType.LAZY)
private Set<Function> children = new HashSet<>();
}
如果这个关联是急切的@ManyToMany(fetch = FetchType.EAGER),那么它的所有孩子总是会在一次访问数据库时被初始化。当然,我不希望这个协会急于求成。
使用 JPA Criteria API,可以使用someRoot.fetch(Function_.children) 获取集合。但这只会获取一层深度,并且不像 Eager fetch 类型那样递归。
有没有一种方法可以递归地获取它的孩子而不使其成为一个急切的关联?
【问题讨论】:
-
无论你想要它是懒惰的还是渴望的,没有第三种类型的 Eager-on-lazy-init
-
@XtremeBaumer 没有配置它,所以它仍然是它的默认值。这对我有什么帮助?
-
如果访问“第二”层,究竟会发生什么?它仍然应该为实体补水
-
@XtremeBaumer 是的,它会,但我试图避免额外的数据库调用。
标签: java hibernate jpa criteria hibernate-criteria