java - 如何在jparepository中使用Stream方法

标签 java spring vaadin

我是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) 直到出现同样的错误。 请帮帮我!

最佳答案

您需要做几件事。

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

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

关于java - 如何在jparepository中使用Stream方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51435676/

相关文章:

tomcat - 将 Vaadin/SpringBoot 部署为 WAR

spring - Vaadin 7.4、Spring、Tomcat 7、使用@WebServlet 更改上下文根

java - SQL Server 7.0 的 JDBC 驱动程序?

java - Android Media Player SeekBar 不通过歌曲文件寻找

java - 目标窗口已因未知错误 : web view not found 关闭

java - java IoC框架如何保证线程安全?

java - SpringMVC : @PathVariable value containing the plus (+) character

Spring Webflux 和 Spring Cloud Gateway : how to extract object in Mono and add to request header

java - Spring data mongodb 模拟 ifNull 行为

java - 调整 Vaadin 小部件之间的间距量