2012-10-31 35 views
-1

我有一個JPA異常的問題,當我想在數據庫中插入一行我得到這個異常:JAVA JPA ValidationException

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

你的問題是什麼?你顯然試圖插入一些不屬於那裏的東西。沒有一些代碼可以看到,我們不能告訴你什麼。 –

回答

3
  1. 你有javax.persistence.RollbackException

  2. 這僅在EntityTransaction.commit()失敗時引發

  3. EclipseLink中的基本原因是org.eclipse.persistence.exceptions.ValidationException uns在此UnitOfWork上調用了成功的writeChanges()。 由於部分更改已寫入 數據存儲但未回滾(如果是在內部外部事務中),現在僅支持的操作是發佈,全局事務 回滾,任何非對象級別查詢或SQLCall執行。嘗試執行提交 。

到目前爲止,您需要提供一些代碼或您的交易描述。

我想也許你: 1.啓動的事務,更新/持續的數據,未能在承諾,收到了RollbackException 2.繼續使用相同的持久化上下文相同的實體對象,並接收到另一個RollbackException。這是非法的。第一次收到RollbackException時,必須清除持久性上下文並重新開始:

如果這是嘗試:在您的錯誤處理代碼中使用EntityManager.clear(),則在開始新事務之前重新檢索對象。