Java 如何仅获取与JPA中的其他两个表具有@OneToMany关系的父记录

Java 如何仅获取与JPA中的其他两个表具有@OneToMany关系的父记录,java,mysql,hibernate,jpa,Java,Mysql,Hibernate,Jpa,我有3个实体 1.)检查表 2)任务 3)过程 但输出也包含子表记录。使用JPQL: select c from checklistEntity c where class = checklistEntity PS Java中的一般惯例是类名应该以大写字母开头。可能不是这样 您是否看到了hibernate(我想是…)日志,并看到这两个表正在获取 对于那些@OneToMany Relationship,您表示希望进行懒散的获取。 这意味着,如果你有这样的物体,是的 Checklist() {

我有3个实体 1.)检查表 2)任务 3)过程

但输出也包含子表记录。

使用JPQL:

select c from checklistEntity c where class = checklistEntity
PS Java中的一般惯例是类名应该以大写字母开头。

可能不是这样

您是否看到了hibernate(我想是…)日志,并看到这两个表正在获取

对于那些@OneToMany Relationship,您表示希望进行懒散的获取。 这意味着,如果你有这样的物体,是的

Checklist() {
    List<Task> tasks .....
    Process process....
    ....
}
我知道很难确定惟一的清单是fetch,因为如果您想观察这些值,它们不再是null:D,但这个懒散的fetch意味着什么

我想这是应有的表现吧?如果是这样的话,如果您永远不会查看此函数中的任务和流程,这是可以的(或者如果您只查看其中的一小部分),但是如果您查看所有或几乎所有的任务和流程,则比以前加载的任务和流程更好。(使用EGER)


希望它能有所帮助

为什么我们对不必要地使用本机查询感兴趣,而同样的事情也可以通过JPQL/Criteria API实现?
select c from checklistEntity c where class = checklistEntity
Checklist() {
    List<Task> tasks .....
    Process process....
    ....
}
  checklistEntity.selectAll
  Checklist c = // one of those Checklist fetch with this function.
  // c.tasks is empty
  // c.process is empty
  List<Task> list = c.getTasks();
  // list is not empty, in this line fetch for tasks is made
  Process p = c.getProcess();
  // p is not empty, in this line fetch for process is made.