我有两个实体,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操作应该很慢。有什么方法可以通过单个查询获取所有内容吗?
答案 0 :(得分:0)
我发现这对我有用:
query.setHint("eclipselink.join-fetch", "o.department");
另外,我发现这个很方便,因为它不会进行任何连接,而是批量提取记录。
query.setHint("eclipselink.batch", "o.department");