Jboss Seam:事务回滚后无法恢复会话

时间:2016-06-17 08:52:40

标签: hibernate jboss5.x seam2 jboss-seam seam-conversation

我需要一些帮助。

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

  

2016-06-17 10:38:32,815 ERROR [org.hibernate.LazyInitializationException](http-127.0.0.1-8091-2)无法懒洋洋地初始化角色集合:com.test.web.entity.Promotions 。结果,没有会议或会议结束   org.hibernate.LazyInitializationException:懒得初始化角色集合:com.test.web.entity.Promotions.Results,没有关闭会话或会话

为了重新附加实体,我在上面的步骤之前调用了refresh()方法,并且当select()刷新因为refresh()而被触发时出现了以下错误:

  

2016-06-17 10:13:32,710 ERROR [org.hibernate.util.JDBCExceptionReporter](http-127.0.0.1-8091-3)Transaction TransactionImple< ac,BasicAction:a2691f4:fb24:5763b0a4:b4 status: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 SEVERE [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'中,我有以下属性:

  

property name =“hibernate.transaction.manager_lookup_class”value =“org.hibernate.transaction.JBossTransactionManagerLookup”/>

     

property name =“hibernate.connection.release_mode”value =“after_transaction”/>

你能否在这里建议问题是什么?如何开始使用实体回滚后?似乎'回滚'动作正在关闭会话,我找不到任何重新获得相同的方法。

谢谢!

1 个答案:

答案 0 :(得分:0)

为什么不抓住此异常,然后将用户重定向到当前页面

 try{

     }
  catch(ConstraintViolationException cve)
    {
      FacesManager.instance().redirect(Pages.getCurrentViewId(), parameters, includeConversationId, includePageParameters);
    }