Я пытаюсь использовать Hibernate для извлечения приблизительно 100 миллионов строк из таблицы. У меня есть постоянный объект, который содержит коллекцию сборов внутри (другое постоянное лицо). Учитывая, что я будет перебирать результат и получать доступ к гонорарам за каждый объект, я хочу с нетерпением получить комиссионные, чтобы избежать проблемы с n + 1.Нежелательная выборка в Hibernate с прокручиваемыми результатами
Следует также упомянуть, что я хочу присоединиться к нему в другую таблицу под названием Provider (индивидуальное сопоставление, но без внешнего ключа). Я попробовал:
String query = "select new " + Order.class.getName()
+ "(i, p) from Item i left join fetch i.fees f, Provider p where "
+ "p.factoryId=i.factoryId and p.factoryRef=i.factoryRef";
return session.createQuery(query).scroll();
Класс My Order содержит поле Provider и поле Item. Я получаю эту ошибку:
Caused by: org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list
Я хотел бы закончить с прокруткой списка заказа, который содержит пункт (с гонорарами охотно надуманными) и поставщика.
Я думаю, что этот ответ правильный. Если это так, вы должны позволить Hibernate знать, что вы действительно выбираете 'Item', меняя запрос, чтобы возвращать' List', а не создавать 'Order':' select i, p from ... '. Затем вам нужно будет создать «Заказ вручную». –