У меня есть класс Invoice.
Имеет следующие коллекции.
@OneToMany(mappedBy = "taxInvoiceLinkId.invoice")
private List<TaxInvoiceLink> taxLinks;
@OneToMany(mappedBy = "invoiceCustomInfoLinkId.invoice")
private Set<InvoiceCustomInfoLink> customInfos = new LinkedHashSet(0);
Для эффективного извлечения этих двух коллекций (в терминах туда и обратно) я должен сделать
Вариант 1: Присоединиться к выборке по
Session session = SessionFactoryHandler.getSession();
List result = null;
session.beginTransaction();
Query query = session.createQuery
(" From Invoice Inv left join fetch "+
" Inv.taxLinks left join fetch Inv.customInfos where
invoice.id = 1");
result = query.list();
session.getTransaction().commit();
return result;
Вариант 2: выполнить как два оператора
Session session = SessionFactoryHandler.getSession();
List result = null;
session.beginTransaction();
Query query = session.createQuery
(" From Invoice Inv left join fetch Inv.taxLinks
where invoice.id = 1" );
result = query.list();
query = session.createQuery
(" From Invoice Inv left join fetch Inv.customInfos where
invoice.id = 1");
result = query.list();
session.getTransaction().commit();
return result;