Обработка исключений EntityManager в сессионном компоненте

У меня есть управляемый сессионный компонент без сохранения состояния с внедренным EntityManager em.

Я пытаюсь создать таблицу базы данных с уникальным столбцом. Затем я запускаю некоторый алгоритм, который пытается вставить объект. Однако, если сущность существует, она обновит ее или пропустит.

Я хотел бы иметь что-то вроде этого:

try {   
em.persist(cd);     
em.flush();     
} catch (PersistenceException e) {  
// Check if the exception is DatabaseException and ConstraintViolation
    // Update instead or skip it
}

Проблема в том, что я могу ловить толькоPersistenceException. DatabaseException не ловится. Это печально, потому что толькоDatabaseException имеет метод называетсяgetDatabaseErrorCode() Я хотел бы использовать для проверки дублирования записи. Я не понимаю этого, потому чтоPersistenceException.getCause() возвращаетсяDatabaseException.

Итак, мой вопрос: как я могу пойматьDatabaseException и проверить код ошибки MySQL?

Спасибо за любые идеи и опыт с этим.

Ответы на вопрос(1)

Ваш ответ на вопрос