У меня есть один такой класс:
public class BookAuthor {
private Book book;
private Author author;
}
Книга и Автор определяются как объекты.
Когда я пытаюсь получить данные, вот так:
final String selectCols = "NEW BookAuthor(b,a)";
final org.hibernate.Query q = createQuery(selectCols, params, filters);
result = q.list();
return result;
Когда Hibernate выполняет «q.list()», он выполняет один запрос для получения идентификаторов книги и автора, а затем повторяет результаты, чтобы получить информацию об авторах и книгах. То есть в моем логе было бы что-то вроде этого:
select a.ID, b.ID
from authors a , books b
И затем для каждой строки:
select a.ID, a.name
where a.ID = ?
select b.ID, b.title
where b.ID = ?
Есть ли способ сказать Hibernate, чтобы получить результаты с одним запросом, чтобы повысить производительность, как это? :
select a.ID, a.name, b.ID, b.title
from authors a , books b
Заранее спасибо.
Редактировать :
Сущности определяются со ссылкой на их таблицы и имена столбцов, например:
public static final String TABLE_NAME = "AUTHOR";
@Column(name = "id", nullable = false)
protected Long id;
Я думаю, что между автором и книгой нет ограничений БД (это был только пример реальных сущностей, но допустим, что могут быть некоторые анонимные книги без автора). Спасибо JB Nizet, я получу запрос и опубликую его здесь через некоторое время.