Zdravim,
proc vyuzivate INNER JOIN FETCH. Nestacil by LEFT JOIN FETCH? To by
melo Vas problem vyresit.
JF
Cituji jan_bar <[EMAIL PROTECTED]>:
Zdravím,
mám EJB3 entitu Order, která má 1:N vztah na Item (je to List) a též 1:N na
OrderState (je to Set, stav ve kterém se nachází Order). Oba vztahy jsou
lazy loaded. Chci jedním EJB QL natáhnout Order včetně všech Items a
OrderStates:
"SELECT DISTINCT o FROM Order o" +
" INNER JOIN FETCH o.orderEvents e" +
" INNER JOIN FETCH o.items i" +
" WHERE o.id = 98305"
Order 98305 má jeden Item a dvě OrderEvents. Výsledný Order.items ale
obsahuje 2x stejnou instanci Item. Je to zřejmě proto, že SQL vrátí dva
řádky, každý pro jeden OrderEvent a ORM mi z toho udělá též dvě (stejné)
položky v seznamu items. Možná by problém vyřešilo použít Set místo List na
items, ale to nechci (items jsou řazeny podle čísla).
Snad jsem problém popsal dostatečně. Nevím zda je toto vlastnost EJB3 ORM a
nevím jak to elegantně vyřešit.
(JBoss 4.2.GA)
Díky, Honza
--
Jan Bares
http://jan.vegetband.cz