【发布时间】:2014-09-02 22:02:18
【问题描述】:
我正在使用 JPA 2 Hibernate 实现和 Spring MVC 来管理事务
我正在使用通用 DAO 模式来管理数据库操作
目前,我们有一个单一方法的事务,例如:
someDao.save (someObject)
这是一个从 JSF 页面调用的 @Transactional 方法。
save方法继承自Generic DAO,它持久化到数据库中具有级联oneToMany关系的许多实体,但它必须在数据库中执行大约1000条insert语句,因此需要很长时间。
我想为用户提供一种取消操作的方法,但到目前为止,我无法做到这一点,当我调用方法 save() 时,直到所有插入都完成后才能取消执行。
我试图抛出一些异常,从注入的 PersistenceContext 回滚事务,但它没用,它只是完成而没有错误:(
显然,我不能从方法中抛出异常,这只是来自我的源的一次调用。 JPA PersistenceContext 无所不能
有没有办法取消操作并强制回滚?
【问题讨论】:
标签: java spring hibernate jpa transactions