У меня есть один класс, как это:Hibernate: агрегатные два объекта в одном классе для извлечения данных с одного запросом HQL
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
Заранее благодарен.
Edit:
Сущность определяется со ссылкой на свои таблицы и имена столбцов, как:
public static final String TABLE_NAME = "AUTHOR";
@Column(name = "id", nullable = false)
protected Long id;
Я думаю, что нет DB ограничения между автором и книгами (это только пример реальных сущностей , но скажем, что могут быть анонимные книги без автора). Спасибо JB Nizet, я выберу запрос и отправлю его здесь через некоторое время.
Как определяются сущности? Каков запрос, который вы выполняете? Почему бы вам просто не выбрать все книги или всех авторов и использовать связь между ними, чтобы получить автора (или книги)? –