Я внедряю процедуру поиска с критериями гибернации, чтобы найти зарегистрированных пользователей.Каждый пользователь может иметь один или несколько адресов.я построил следующую структуру и добавил ее ограничения, необходимые для запроса к БД:
ricerca = s.createCriteria(User.class).createAlias("addresses","a",Criteria.LEFT_JOIN);
при поиске по пользовательским данным (имя, фамилия, ssn и т. д.) я получил запись для каждогоизвестный адрес, предоставленный пользователем (см. ниже упрощенную версию запроса гибернации, которую я протестировал с клиентом db)
select *
from User this_ left outer join Address i1_
on this_.ID=i1_.User where lower(this_.Name) like '%mario%' order by i1_.ID desc
У Марио есть три адреса, а клиент db возвращает три записи: это нормальнодля меня, но Hibernate возвращает три объекта типа User, каждый с коллекцией адресов, полной всех адресов.Это похоже на то, когда вы упускаете возможность поставить отличительный в запросе.Могу ли я изменить дизайн запроса так, чтобы я получал по одному адресу на строку (все же три результата для одного и того же пользователя, но с одним отдельным адресом)?Примечание. Пользователь не мог указать адрес.