是否可以在存储库流上编写单元测试?

问题描述 投票:0回答:1

在 Java 中,使用 JPA 和 Spring Data,我使用流从数据库获取数据。例如:

@Query(value = STATIC_QUERY_STRING,
        countQuery = STATIC_COUNT__QUERY_STRING
)
@QueryHints(value = {
    @QueryHint(name = HINT_FETCH_SIZE, value = "" + Integer.MIN_VALUE),
    @QueryHint(name = HINT_CACHEABLE, value = "false"),
    @QueryHint(name = HINT_READONLY, value = "true")})
Stream<ObjectDto> search(@Param("searchDTO") SearchDto searchDto);

如果我针对返回

Page<ObjectDto>
的类似函数编写单元测试,我就能够通过测试。但是,如果我针对任何 Stream 版本编写测试,则会遇到内存测试问题。

原因:org.springframework.orm.jpa.JpaSystemException:无法 使用滚动执行查询;嵌套异常是 org.hibernate.exception.GenericJDBCException:无法执行查询 使用滚动

我的结论是,内存h2数据库不支持这个操作,但还没有真正找到任何方法来证实或否认这个假设。我四处搜寻并没有得到明确的答案。有谁遇到过并解决这个问题吗?

java unit-testing
1个回答
0
投票

这个错误似乎已经在这个旧帖子中得到了回答:H2数据库是否支持滚动

hint-fetch-size 似乎在 h2 中不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.