【发布时间】:2021-12-13 10:39:43
【问题描述】:
我试图通过抛出异常来回滚某些条件。但我找不到正确的方法来做到这一点。这是我的服务类
@Service
public class UserManager implements IUserManager {
private final IBasicEM basicEM;
public ApplicantInfoManager(IBasicEM basicEM) {
this.basicEM = basicEM;
}
@Override
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public boolean purgeUser(Long id) throws Exception {
//business logic
basicEM.Update(entity)
if(//condition) {
throw New RollBackException("//message")
}
//business logic
}
}
这是我的BasicEM 课程
@Component
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public class BasicEM {
@PersistenceContext(unitName = "db1")
private EntityManager em;
public void update(Object target) {
em.merge(target);
}
}
所以我想要调用 update 方法,然后如果条件为真,则撤消更新。
我的意图是当我抛出异常时,事务结束并且不提交更新。但我错了,更新已经完成。请帮助我实现我的目标。
【问题讨论】:
标签: spring hibernate orm transactions entitymanager