-1

データベースに行を挿入しようとすると、1 つの JPA 例外に問題があり、次の例外が発生しました。

javax.persistence.RollbackException: Exception [EclipseLink-7124] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.ValidationException
Exception Description: An unsuccessful writeChanges() has been called on this UnitOfWork.  Given the danger that partial changes have been written to the datastore but not rolled back (if inside external transaction), the only supported operations now are release, global transaction rollback, any non-object level query or SQLCall execution.  The operation commit was attempted.
    at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:102)
    at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:63)
    at database.TarpineManager.commitTransaction(TarpineManager.java:23)
    at gijos.InsertToDB.insertLink(InsertToDB.java:57)
    at gijos.LygiagretusIrasymas.run(LygiagretusIrasymas.java:26)
Caused by: Exception [EclipseLink-7124] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.ValidationException
Exception Description: An unsuccessful writeChanges() has been called on this UnitOfWork.  Given the danger that partial changes have been written to the datastore but not rolled back (if inside external transaction), the only supported operations now are release, global transaction rollback, any non-object level query or SQLCall execution.  The operation commit was attempted.
    at org.eclipse.persistence.exceptions.ValidationException.unitOfWorkAfterWriteChangesFailed(ValidationException.java:1802)
    at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:1119)
    at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:84)
    ... 4 more
4

1 に答える 1

3
  1. javax.persistence.RollbackException があります

  2. これは、EntityTransaction.commit() が失敗した場合にのみ発生します

  3. EclipseLink 内の根本的な原因は、org.eclipse.persistence.exceptions.ValidationException です。この UnitOfWork での writeChanges() の呼び出しが失敗しました。部分的な変更がデータストアに書き込まれているが、ロールバックされていない (外部トランザクション内の場合) という危険性を考慮して、現在サポートされている操作は、リリース、グローバル トランザクションのロールバック、非オブジェクト レベルのクエリ、または SQLCall の実行のみです。操作のコミットが試行されました。

この時点までのトランザクションのコードまたは説明を提供する必要があります。

1. トランザクションを開始し、データを更新/永続化し、コミットに失敗し、RollbackException を受け取りました。 2. 同じエンティティ オブジェクトを同じ永続化コンテキストで使用し続け、別の RollbackException を受け取りました。これは違法です。RollbackException を初めて受け取ったときは、永続化コンテキストをクリアして最初からやり直す必要があります。

これが試行される場合:EntityManager.clear()エラー処理コードで使用し、新しいトランザクションを開始する前にオブジェクトを再取得します。

于 2012-11-02T03:35:40.513 に答える