0

我需要一些帮助。

我正在使用 Jboss 5.1 和 Seam 2.2,Hibernate。在其中一个 UI 页面中,在更新操作期间存在数据库约束违规并且事务被回滚。在此回滚之后,如果我尝试使用该实体,我会收到以下错误:

2016-06-17 10:38:32,815 错误 [org.hibernate.LazyInitializationException] (http-127.0.0.1-8091-2) 无法延迟初始化角色集合:com.test.web.entity.Promotions.Results,没有会话或会话被关闭 org.hibernate.LazyInitializationException:未能延迟初始化角色集合:com.test.web.entity.Promotions.Results,没有会话或会话被关闭

为了重新附加实体,我在上述步骤之前调用了 refresh() 方法,并在由于 refresh() 触发选择查询时得到以下错误:

2016-06-17 10:13:32,710 错误 [org.hibernate.util.JDBCExceptionReporter] (http-127.0.0.1-8091-3) 事务 TransactionImple < ac,BasicAction:a2691f4:fb24:5763b0a4:b4 状态:ActionStatus.ABORT_ONLY > 无法继续 STATUS_MARKED_ROLLBACK;- 嵌套 throwable: (javax.transaction.RollbackException: Transaction TransactionImple < ac, BasicAction: a2691f4:fb24:5763b0a4:b4 status: ActionStatus.ABORT_ONLY > 无法继续 STATUS_MARKED_ROLLBACK)

2016-06-17 10:13:32,710 严重 [javax.enterprise.resource.webcontainer.jsf.application] (http-127.0.0.1-8091-3) javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: 可以不检查 JDBC 自动提交模式 javax.faces.el.E​​valuationException: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: 无法检查 JDBC 自动提交模式

我在“properties-service.xml”中设置了以下参数,但没有任何区别:

'org.jboss.resource.connectionmanager.TxConnectionManager.ignoreStatusMarkedForRollback=true'

在“persistence.xml”中,我有以下属性:

属性名称="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>

属性名称="hibernate.connection.release_mode" 值="after_transaction" />

您能否建议这里有什么问题以及我如何开始使用回滚后的实体?似乎“回滚”操作正在关闭会话,我没有找到任何方法来恢复它。

谢谢 !!!

4

1 回答 1

0

你为什么不捕捉这个异常然后将用户重定向到当前页面

 try{

     }
  catch(ConstraintViolationException cve)
    {
      FacesManager.instance().redirect(Pages.getCurrentViewId(), parameters, includeConversationId, includePageParameters);
    }
于 2016-07-26T09:56:16.757 回答