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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage