2012-10-31 34 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(),则在开始新事务之前重新检索对象。