복붙노트

[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. ==============================

    1.아, 무슨 일이 일어나는 지 알 겠어. ConstraintViolationException은, 메소드가 실행 된 후, add () 메소드의 트랜잭션 (transaction) 요격 기가 트랜잭션 (transaction)를 위탁하려고했을 때에, 위탁 할 때에 발생합니다. 커밋 할 수 없으므로 분명히 트랜잭션이 롤백됩니다. 그것은 다른 어떤 것도 할 수 없습니다.

    아, 무슨 일이 일어나는 지 알 겠어. ConstraintViolationException은, 메소드가 실행 된 후, add () 메소드의 트랜잭션 (transaction) 요격 기가 트랜잭션 (transaction)를 위탁하려고했을 때에, 위탁 할 때에 발생합니다. 커밋 할 수 없으므로 분명히 트랜잭션이 롤백됩니다. 그것은 다른 어떤 것도 할 수 없습니다.

  2. from https://stackoverflow.com/questions/13777666/no-rollback-for-constraintviolationexception-in-transactional-service by cc-by-sa and MIT license