В проекте существует большой jpa-запрос, такой как
@Query( "select foo from FooEntity
left join fetch foo.bars bars
join fetch bars.baz "
/** ca 10 more entities with join fetch and left join fetch" */
"where" /** some conditions */
"order by foo.id")
Stream<FooEntity> getFoos()
. Теперь я попытался изменить его на List<FooEntity>
(так как клиент только вызвал collect(toList())
), но он нарушает некоторые тесты.содержит дубликаты.При использовании Set<FooEntity>
он ведет себя так же, как и с Stream<FooEntity>
.
. Не вдаваясь в подробности о большом запросе, это «нормально», ожидаемое поведение или это может указывать на какую-то ошибку в запросе?
Я также рассмотрел некоторые вопросы, такие как Допустимо ли для Hibernate list () возвращать дубликаты? , но есть ли различия между Stream
и List
, которые могут бытьопределено в некоторой спецификации?
SQL, сгенерированный Hibernate, кстати, одинаков для всех типов возвращаемых данных