Я использую 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 не помогают, так как там нет дубликатов. Я мог бы вручную удалить те записи, которые были бы весьма неэффективными, я думаю.