JpaRepository在有关重复项的Stream <t>和List <t>返回类型上的行为有所不同吗?

时间:2019-03-04 14:09:18

标签: hibernate spring-data-jpa spring-data

在一个项目中,有一个大型的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>相同。

在没有详细讨论大型查询的情况下,它是“可以”,预期的行为,还是表明查询中存在一些错误?

我还研究了诸如Is it valid for Hibernate list() to return duplicates?之类的问题,但是StreamList之间是否有某些差异,可以在某些规范中定义?

对于所有返回类型,Hibernate生成的SQL都是相同的

0 个答案:

没有答案