У меня есть два объекта, а dept_id
- это внешний ключ здесь.ManyToOne выполняет несколько запросов для извлечения записей
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, где у меня есть около 100 параметров внутри in
запроса:
select o from Student o where o.id in(1,2,7,9,15,16, ...)
Когда я вижу в журнале JPA, я нашел это извлечение 100 записей из Student
по одному запросу. После этого он выполняет 100 отдельных запросов для получения Department
для каждого Student
. До сих пор я понимаю, что операция ввода-вывода должна быть медленной. Есть ли способ, чтобы он извлекал все по одному запросу?
и вы попробовали «FETCH JOIN» на студент.департамент? –
Я просто попробовал 'query.setHint (« eclipselink.join-fetch »,« o.department »);« и я думаю, что я смогу продвинуться дальше. –