JpaRepository ведет себя по-разному с Stream <T>и List <T>возвращаемых типов относительно дубликатов? - PullRequest
0 голосов
/ 04 марта 2019

В проекте существует большой 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, кстати, одинаков для всех типов возвращаемых данных

...