我有一个RESTFul服务(由泽西实施)。该服务标有@Transactional。
我像这样声明了一个ExceptionMapper:
@Provider
public class ThrowableMapper implements ExceptionMapper<Throwable> {
private static final Logger log = Logger.getLogger(ThrowableMapper.class);
public Response toResponse(Throwable ex) {
log.error("throwable", ex);
return Response.status(500).entity("Internal Error").type("text/plain").build();
}
}
当未声明exceptionmapper时,事务是回滚。 但是,当我有一个ExceptionMapper事务时,提交没有回滚。
我假设事务没有回滚的原因是因为ExceptionMapper捕获异常时弹出事务代理dosnt检测到异常被抛出,因此事务不会回滚。
有没有办法克服这个问题?
答案 0 :(得分:0)
这不是最干净的解决方案,但没有找到任何其他解决方案。 我将它添加到ExceptionMapper:
TransactionAspectSupport.currentTransactionStatus( ).setRollbackOnly();