我正在使用 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 做所有事情
有没有办法取消操作并强制回滚?