EntityManager em が注入されたマネージド ステートレス セッション Bean があります。
私がやろうとしているのは、一意の列を持つデータベース テーブルを持つことです。次に、エンティティを挿入しようとするアルゴリズムを実行します。ただし、エンティティが存在する場合は、更新するかスキップします。
私はこのようなものが欲しいです:
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 エラー コードをキャッチして確認するにはどうすればよいですか?
これに関するアイデアや経験をありがとう。