Как обрабатывать исключения с помощью EntityManager в Spring Boot - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть слой дао:

@Transactional
public class DatabaseCollectionDao implements IDatabaseCollectionDao {

    @PersistenceContext
    private EntityManager entityManager;

    @Override
    public void create(Collection collection) {
           entityManager.persist(collection);
    }
}

Это работает правильно , но:

  1. Когда база данных недоступна, у меня есть SocketException .
  2. Когда база данных содержит дубликат ключа, у меня есть SQLIntegrityConstraintViolationException

Я пытаюсь попробовать / поймать внутри метода создания:

@Override
    public void create(Collection collection) {
           try{
               entityManager.persist(collection);
           } catch (SQLIntegrityConstraintViolationException e){
               //do smth
           }
    }

Но Intellij говорит, что никогда не выбрасывается .
Когда я пытаюсь попытаться / поймать Исключение У меня UnexpectedRollbackException .

Как обрабатывать исключения с помощью JPA entityManager?

update : попытка удалить @Transactional ничего не дала

PSконечно, я пытался попробовать / поймать его в более высоких слоях.Я не знаю, что я могу попробовать еще, чтобы решить это.

1 Ответ

0 голосов
/ 28 февраля 2019

создание обработчика customException, расширение ResponseEntityExceptionHandler.@ExceptionHandler (ConstraintViolationException :: class) забавный handleConstraintViolation (например, ConstraintViolationException, request: WebRequest): ResponseEntity {} этот фрагмент kotlin, который вы можете легко преобразовать в Java -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...