Obsługa wyjątków EntityManager w komponencie bean sesji
Mam zarządzany bezstanowy komponent bean sesji ze wstrzykniętym em entityManager em.
Próbuję zrobić tabelę bazy danych z unikalną kolumną. Następnie uruchamiam jakiś algorytm, który próbuje wstawić obiekt. Jeśli jednostka istnieje, zaktualizuje ją lub pominie.
Chciałbym mieć coś takiego:
try {
em.persist(cd);
em.flush();
} catch (PersistenceException e) {
// Check if the exception is DatabaseException and ConstraintViolation
// Update instead or skip it
}
Problem polega na tym, że jestem w stanie złapać tylkoPersistenceException
. DatabaseException
nie jest złapany. To smutne, bo tylkoDatabaseException
ma metodę zwanągetDatabaseErrorCode()
Chciałbym użyć do sprawdzenia zduplikowanego wpisu. Nie rozumiem tego, ponieważPersistenceException.getCause()
zwracaDatabaseException
.
Moje pytanie brzmi: jak złapaćDatabaseException
i sprawdź kod błędu MySQL?
Dziękujemy za wszelkie pomysły i doświadczenia z tym związane.