私はjpaでeclipselinkを使用していますが、コミットすると情報が不足してエラーが発生することがあります。エラーの原因をすばやく見つけるのに役立つ追加の有益なエラーを取得する方法がありますか?
entityManager.getTransaction().commit();
私はjpaでeclipselinkを使用していますが、コミットすると情報が不足してエラーが発生することがあります。エラーの原因をすばやく見つけるのに役立つ追加の有益なエラーを取得する方法がありますか?
entityManager.getTransaction().commit();
これは、コミット自体が失敗する典型的なケースです。最も一般的なのは、データベースに制約がある場合で、JPA レイヤーでは認識されていません。たとえば、データベース テーブルの列に、JPA で定義されていない一意の制約がある場合があります。この場合、コミットはエラーをスローします。したがって、私の提案は、データベースの制約違反の可能性をチェックすることです。さらにjavax.transaction.RollbackException
、トランザクションの周囲をキャッチする必要があります。
try {
entityManager.getTransaction().begin();
...
entityManager.getTransaction().commit();
} catch (RollbackException e1) {
System.out.println(e1.getMessage());
System.out.println(e1.getCause());
throw ...;
}
にはe1.getCause()
、違反した制約が含まれている必要があります。少なくとも、文明化されたデータベースと JDBC ドライバーを使用する場合:)。