Използвам HQL заявка, за да получа определени записи. Ако използвам LEFT JOIN FETCH
колекция, която е в моя целеви обект, ще съдържа дублиращи се записи. Ако използвам само ляво присъединяване, няма да стане. Предполагам, че когато Hibernate лениво зарежда записите, избягва дубликати.
"SELECT z FROM ", TableA.TABLE_NAME, " z ", //
"LEFT JOIN FETCH z.attributeX pv ", //
"LEFT JOIN FETCH pv.attributeY anteil ", //
"LEFT JOIN FETCH z.attributeB kma ", //
"LEFT JOIN FETCH kma.attributeC ", //
"WHERE anteil.attributeD.attributeE.id = :eId ", //
"AND pv.attributeG.id = :gId ");
Моят обект TableA
има връзка към TablePV
(LEFT JOIN FETCH z.attributeX pv
)
TablePV
има колекция от TableY
(LEFT JOIN FETCH pv.attributeY anteil
)
Сега Hibernate ще картографира всичко правилно с изключение на децата на TablePV
. Той ще съдържа няколко пъти един и същ запис. Разграничаването на TableA
не помага, тъй като там няма дубликати. Бих могъл ръчно да премахна тези записи, което би било доста неефективно, предполагам.