【问题标题】:Spring data JPA fetch data as stream of list of ObjectSpring data JPA 获取数据作为对象列表的流
【发布时间】:2016-10-10 16:33:01
【问题描述】:

我有一个 Spring Web 应用程序,它使用 Spring Data JPA 与 DB 进行交互。我有一个包含数百万条记录的表,我想导出一个包含大量数据的 CSV,为此我考虑使用 Stream。

@Query(value = "SELECT * FROM table WHERE id=:id", nativeQuery = true)
public Stream<Object[]> getData(@Param("id") long id);

执行查询工作正常,我将数据作为流获取,但是当我尝试处理流时出现问题,我得到ClassCastException,即BigInteger 无法转换为Object。 有人可以建议我在哪里弄错了。

【问题讨论】:

  • 您没有相应的Entity 用于存储库吗? Stream&lt;Entity&gt; 似乎更合理
  • 不,我没有存储库的实体,而且我正在加入多个表(查询未在问题中显示)所以我期待一个包含多个列的结果集(可能会有所不同),我不能有一个对象数组的列表吗?
  • 我会切换到 JdbcTemplate 来完成这个任务。
  • JDBC 模板不会在内存中获取和保存记录吗?

标签: java spring spring-data spring-data-jpa java-stream


【解决方案1】:

您得到了 ClassCastException,因为它仅获取选择查询中的第一个字段,该字段可能是数字类型。 我有同样的问题,将 spring-boot-starter-parent 更新到版本 1.4.1.RELEASE 使其工作。 (spring-data-jpa: 1.10.3.RELEASE 休眠核心:5.0.11.Final)

【讨论】:

  • 将我的 spring IO 更新到雅典 RELEASE 解决了我的问题。
猜你喜欢
  • 2020-05-30
  • 2020-04-22
  • 2017-10-05
  • 2013-03-07
  • 2020-03-11
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多