我是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),直到出现相同的错误。 请帮帮我!
答案 0 :(得分:0)
您需要做几件事。
使用流处理数据需要我们在完成流后关闭流。 可以通过在Stream上调用close()方法或使用try-with-resources
来完成。 try (Stream<Customer> customers = repo.getAllFirstNames()) {
System.out.println("Customers"+ customers);
}
Transactional(readonly=true)