Скажем, есть два класса, Task и JobContentSummary, и у нас есть две версии этих двух: Версия 1:
public class Task {
@OneToOne(mappedBy="task")
private JobContentSummary jobContentSummary;
}
public class JobContentSummary {
@OneToOne()
@JoinColumn(name = "task_id")
private Task task;
}
Версия 2:
public class Task {
@OneToOne()
@JoinColumn(name = "jobcontent_summary_id")
private JobContentSummary jobContentSummary;
}
public class JobContentSummary {
@OneToOne(mappedBy="jobContentSummary")
private Task task;
}
Затем выполните следующеекод:
String hql = "from Task t left join fetch left join fetch t.jobContentSummary";
Query query = getSession().createQuery(hql);
query.list();
Я обнаружил, что при использовании Версии 2 Hibernate выдает один дополнительный запрос для JobContentSummary для каждого экземпляра Задачи, тогда как при использовании Версии 1 проблема не существует.
IЯ использую Hibernate 4.3.5.Final.Является ли верхний феномен ошибкой (возможно, решена в более поздних версиях?) Или дизайном?
Спасибо.