Hibernate выдает 1 + n запросов, аннотируя отношение OneToOne и используя выборку соединения - PullRequest
0 голосов
/ 10 мая 2019

Скажем, есть два класса, 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.Является ли верхний феномен ошибкой (возможно, решена в более поздних версиях?) Или дизайном?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...