[SPRING] 트랜잭션 서비스에서 ConstraintViolationException에 대한 롤백 없음
SPRING트랜잭션 서비스에서 ConstraintViolationException에 대한 롤백 없음
@Transactional 주석이 달린 add ()라는 서비스 메소드가 있습니다.
나는 그것을 호출하지만 ConstraintViolationException이 상응하는 DAO 메소드 내부에서 발생할 때, 내가 지정하지 않아도 트랜잭션을 롤백 할 것이다.
ConstraintViolationException이 잡히지 않고 대신 NotFoundException 검사 예외가 throw 될 것으로 예상됩니다.
@Override
@Transactional(noRollbackFor = ConstraintViolationException.class)
public User add(User user) throws NotFoundException {
try {
result = userDao.add(user);
} catch (RuntimeException e) {
throw new NotFoundException("Couldn't find group");
}
}
트랜잭션 롤백없이 ConstraintViolationException을 잡을 수있는 방법이 있습니까?
스프링 3.1.1을 사용하고 최대 절전 모드 3.6을 사용하고 있습니다.
해결법
-
==============================
1.아, 무슨 일이 일어나는 지 알 겠어. ConstraintViolationException은, 메소드가 실행 된 후, add () 메소드의 트랜잭션 (transaction) 요격 기가 트랜잭션 (transaction)를 위탁하려고했을 때에, 위탁 할 때에 발생합니다. 커밋 할 수 없으므로 분명히 트랜잭션이 롤백됩니다. 그것은 다른 어떤 것도 할 수 없습니다.
아, 무슨 일이 일어나는 지 알 겠어. ConstraintViolationException은, 메소드가 실행 된 후, add () 메소드의 트랜잭션 (transaction) 요격 기가 트랜잭션 (transaction)를 위탁하려고했을 때에, 위탁 할 때에 발생합니다. 커밋 할 수 없으므로 분명히 트랜잭션이 롤백됩니다. 그것은 다른 어떤 것도 할 수 없습니다.
from https://stackoverflow.com/questions/13777666/no-rollback-for-constraintviolationexception-in-transactional-service by cc-by-sa and MIT license