java - @Transaction readOnly 在 Spring repo 上并保存在另一个 repo
问题描述
我已经实现了以下代码部分:
public void computeAllBilling() {
orderRepository.getAll().parallel().forEach(ordreEntity -> {
Billing billing = computedBilling(orderEntity);
billingRepository.save(billing);
entityManager.detach(ordreEntity);
});
}
public interface BillingRepository extends JpaRepository<BillingEntity, String> {
@QueryHints(value = {
@QueryHint(name = org.hibernate.jpa.QueryHints.HINT_FETCH_SIZE, value = "1"),
@QueryHint(name = org.hibernate.jpa.QueryHints.HINT_CACHEABLE, value = "false"),
@QueryHint(name = org.hibernate.jpa.QueryHints.HINT_READONLY, value = "true")
})
@Query(value = "SELECT o.* FROM raw.ordre o", nativeQuery = true)
Stream<BillingEntity> getAll();
}
我需要从一张表中快速流式传输我的阅读,但是在我们的业务处理中,我们需要在结束时保存账单(阅读器一个订单后必须保存其账单)
但遵循此链接:https ://www.geekyhacker.com/2019/03/26/high-performance-data-fetching-using-spring-data-jpa-stream/
我最终需要保存在另一个存储库中,而不是阅读器存储库。任何人都知道避免的方法
“org.springframework.dao.InvalidDataAccessApiUsageException:您正在尝试执行一个流式查询方法而没有保持连接打开的周围事务,以便可以实际使用 Stream。确保使用流的代码使用 @Transactional 或任何其他声明(只读)事务的方式。”
请 ?非常感谢,最好的问候
阿德里安