我正在使用@OneToMany功能,并设置了FetchType.EAGER。但JPA(通过EclipseLink)继续为列表中的每个子对象发出一个子请求。 我真的不明白为什么。 我遵循了很多我发现的线程,但是无法在一个请求中进行选择。
此外,我使用CriteriaBuilder,CriteriaQuery和一些Predicate来检索我的对象。这可能是个问题? 无论如何,所有这些过滤器仅用于顶级lvl类。我仍然希望得到较低的一个。
我的实体看起来像:
@Entity
@Table(name = "mainTable")
public class MainTable extends SqlEntity {
@OneToMany(fetch = FetchType.EAGER)
private List<MainLocation> locations = new ArrayList<MainLocation>();
...
}
@Entity
@Table(name = "mainLocation")
public class MainLocation extends SqlEntity {
@OneToMany(fetch = FetchType.EAGER)
private List<MainDetail> details = new ArrayList<MainDetail>();
...
}
@Entity
@Table(name = "mainDetail")
public class MainDetail extends SqlEntity {
...
}