【问题标题】:How to use Stream method in jparepository如何在 jparepository 中使用 Stream 方法
【发布时间】:2018-07-20 05:34:26
【问题描述】:

我是 Spring 新手。如何在 jparepository 中使用 Stream 方法。我想从 jparepository 获取数据。我也配置了applicationcontext.xml。我使用的是spring 4版本

我的存储库类

@Repository
 public interface CustomerRepository extends JpaRepository<Customer, Long>{
    @Query("select   c from  Customer c")
    Stream<Customer> getAllFirstNames();
}

我的 mainclass.java

 @Transactional
  public class VaadinUI extends UI  {
      @Autowired
      private  CustomerRepository repo;
         System.out.println("enter into try block");
          Stream<Customer> customers= repo.getAllFirstNames();
          System.out.println("Customers"+ customers); 
    } 

现在我遇到了类似的错误
您正在尝试执行流式查询方法而没有保持连接打开的周围事务,以便可以实际使用流。确保使用流的代码使用 @Transactional 或任何其他声明(只读)事务的方式。

如何解决这个问题。如何在 maincalss.java 中调用存储库流方法 我添加 @Transactional(readonly=true) 直到我得到同样的错误。 请帮帮我!

【问题讨论】:

    标签: java spring vaadin


    【解决方案1】:

    你需要做几件事。

    1. 使用 Stream 处理数据需要我们在完成 Stream 时关闭它。 可以通过在 Stream 上调用 close() 方法或使用 try-with-resources 来完成

       try (Stream<Customer> customers = repo.getAllFirstNames()) {
          System.out.println("Customers"+ customers); 
       }
      
    2. 将调用此函数的方法设为Transactional(readonly=true)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多