[英]How can I avoid Stream<X> return type method in JpaRepository loading all data into memory with EclipseLink JPA?
[英]How to use Stream method in jparepository
我是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); }
现在我有错误
您正在尝试在没有周围事务的情况下执行流查询方法,而该事务不会使连接保持打开状态,从而可以实际使用Stream。 确保使用流的代码使用@Transactional或其他任何声明(只读)事务的方式。
如何解决这个问题。如何在maincalss.java中调用存储库流方法,我添加@Transactional(readonly = true),直到遇到相同的错误。 请帮帮我!
您需要做几件事。
使用流处理数据需要我们在完成流后关闭流。 可以通过在Stream上调用close()方法或使用try-with-resources来完成。
try (Stream<Customer> customers = repo.getAllFirstNames()) { System.out.println("Customers"+ customers); }
Transactional(readonly=true)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.