ManyToOne进行多次查询以获取记录

时间:2014-10-12 08:51:50

标签: jpa eclipselink jpa-2.0

我有两个实体,dept_id是外键。

public class Student implements Serializable {
  ...
  @Id
  @Column(name="id")
  private Integer id; 

  @ManyToOne
  @JoinColumn(name = "dept_id")
  private Department department;
  ...
}

public class Department implements Serializable {
  ...
  @Id
  @Column(name="id")
  private Integer id; 

  @Column(name = "name")
  private String name;
  ...
}

现在我正在执行以下JPQL,我在in查询中有大约100个参数:

select o from Student o where o.id in(1,2,7,9,15,16, ...)

当我看到JPA日志时,我发现它通过一个查询从Student获取了100条记录。之后,它会执行100次单独查询,以便为每个Department获取Student。到目前为止,我的理解是I / O操作应该很慢。有什么方法可以通过单个查询获取所有内容吗?

1 个答案:

答案 0 :(得分:0)

我发现这对我有用:

query.setHint("eclipselink.join-fetch", "o.department");

另外,我发现这个很方便,因为它不会进行任何连接,而是批量提取记录。

query.setHint("eclipselink.batch", "o.department");