小编Mak*_*khz的帖子

使用 Spring 时如何手动取消 JPA 或 Hibernate 事务

我正在使用 JPA 2 Hibernate 实现和 Spring MVC 来管理事务

我正在使用通用 DAO 模式来管理数据库操作

目前,我们有一个单一方法的事务,例如:

someDao.save (someObject)
Run Code Online (Sandbox Code Playgroud)

它是@Transactional从 JSF 页面调用的方法。

save方法继承自Generic DAO,它以级联oneToMany关系持久化到数据库中的多个实体,但是它要在数据库中执行大约1000条insert语句,因此需要很长的时间。

我想为用户提供一种取消操作的方法,但到目前为止,我无法做到这一点,当我调用方法 save() 时,它无法取消,直到所有插入都已执行。

我尝试抛出一些异常,从注入的 PersistenceContext 回滚事务,但它没有用,它只是完成而没有错误:(

显然,我不能从方法内抛出异常,这只是来自我的源的一次调用。JPA PersistenceContext 做所有事情

有没有办法取消操作并强制回滚?

java spring hibernate jpa transactions

4
推荐指数
1
解决办法
5033
查看次数

标签 统计

hibernate ×1

java ×1

jpa ×1

spring ×1

transactions ×1