2016-06-17 2 views
0

J'ai besoin d'aide. J'utilise Jboss 5.1 avec Seam 2.2, Hibernate. Dans l'une des pages de l'interface utilisateur, lors de la mise à jour, une violation de contrainte de base de données et une transaction sont annulées. Après cette annulation, si je tente d'utiliser l'entité, je reçois l'erreur suivante:Jboss Seam: Impossible de récupérer la session après l'annulation de la transaction

2016-06-17 10:38:32,815 ERROR [org.hibernate.LazyInitializationException] (http-127.0.0.1-8091-2) failed to lazily initialize a collection of role: com.test.web.entity.Promotions.Results, no session or session was closed org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.test.web.entity.Promotions.Results, no session or session was closed

Afin de rattacher l'entité, j'ai appelé la méthode refresh() avant l'étape ci-dessus et obtenu l'erreur ci-dessous lorsque la requête de sélection est congédié à la suite de rafraîchissement():

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 > cannot proceed STATUS_MARKED_ROLLBACK; - nested throwable: (javax.transaction.RollbackException: Transaction TransactionImple < ac, BasicAction: a2691f4:fb24:5763b0a4:b4 status: ActionStatus.ABORT_ONLY > cannot proceed 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: could not inspect JDBC autocommit mode javax.faces.el.EvaluationException: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not inspect JDBC autocommit mode

je régler le paramètre ci-dessous dans « propriétés service.xml », mais il n'a pas fait aucune différence:

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

Dans 'persistence.xml', je h ave les propriétés ci-dessous:

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

property name="hibernate.connection.release_mode" value="after_transaction" />

Pourriez-vous s'il vous plaît suggérer quel est le problème ici et comment puis-je commencer à utiliser les entités affichent rollback? Il semble que l'action 'rollback' ferme la session et je ne trouve aucun moyen de la retrouver.

Merci !!!

Répondre

0

pourquoi ne vous prenez pas cette exception alors rediriger l'utilisateur à la page en cours

try{ 

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