Behandlung von EntityManager-Ausnahmen in Session Bean
Ich habe ein verwaltetes zustandsloses Session-Bean mit EntityManager em.
Was ich versuche zu tun, ist, eine Datenbanktabelle mit eindeutiger Spalte zu haben. Dann führe ich einen Algorithmus aus, der versucht, eine Entität einzufügen. Wenn eine Entität vorhanden ist, wird sie jedoch aktualisiert oder übersprungen.
Ich hätte gerne so etwas:
try {
em.persist(cd);
em.flush();
} catch (PersistenceException e) {
// Check if the exception is DatabaseException and ConstraintViolation
// Update instead or skip it
}
Problem ist, dass ich nur fangen kannPersistenceException
. DatabaseException
wird nicht gefangen. Es ist traurig, weil nurDatabaseException
hat Methode aufgerufengetDatabaseErrorCode()
Ich möchte verwenden, um doppelte Einträge zu überprüfen. Ich verstehe es nicht, weilPersistenceException.getCause()
kehrt zurückDatabaseException
.
Meine Frage lautet also: Wie fange ich?DatabaseException
und überprüfen Sie den MySQL-Fehlercode?
Vielen Dank für jegliche Ideen und Erfahrungen damit.