IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

framework seam et em.remove


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    222
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 222
    Points : 120
    Points
    120
    Par défaut framework seam et em.remove
    Salut,

    j'utilise le framework seam : jboss-seam-2.0.1.GA et le serveur d'application JBoss-4.2.0.GA

    Je développe des EJB session bean, et j'ai un problème lorsque je veux supprimer un enregistrement de la base de données avec la méthode em.remove.

    Voici le code qui permet de supprimer un document (je considére qu'un document à une liste de tag et un tag correspond une liste de document)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public void supprimerDocument(Document document) {
     
    		Document doc = em.find(Document.class, document.getId());
     
                    this.getListeDocument().remove(doc);
     
    		Set<Tag> tags = this.listeTag(document.getNom());
    		Iterator<Tag> iterator = tags.iterator();
    		while(iterator.hasNext()){
     
    			Tag t = iterator.next();
     
    			t = em.find(Tag.class, t.getId());
    			System.err.println("nom du tag = "+t.getNom());
    			doc.getTag().remove(t);
    			t.getDocument().remove(doc);
    		}
     
    		System.err.println("ATTENTION : suppression");
    		em.flush();
    		em.refresh(doc);
     
    		em.remove(doc);
     
    		doc=null;
     
    		//em.remove(em.find(Document.class, doc.getId()));
    		System.err.println("ATTENTION : suppression effectué");
    }
    Mais voici l'erreur qui s'affiche dans la console windows :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    09:24:16,031 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TwoPhaseCo
    ordinator_2] TwoPhaseCoordinator.beforeCompletion - failed for com.arjuna.ats.in
    ternal.jta.resources.arjunacore.SynchronizationImple@a1bced
    javax.persistence.EntityNotFoundException: deleted entity passed to persist: [en
    tityBeans.Document#<null>]
            at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException
    (AbstractEntityManagerImpl.java:613)
            at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(Abstra
    ctEntityManagerImpl.java:524)
            at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple
    .beforeCompletion(SynchronizationImple.java:114)
            at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletio
    n(TwoPhaseCoordinator.java:249)
            at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoo
    rdinator.java:88)
            at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
            at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.c
    ommitAndDisassociate(TransactionImple.java:1256)
            at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.co
    mmit(BaseTransaction.java:135)
            at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTra
    nsactionManagerDelegate.java:87)
            at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.commit(Serve
    rVMClientUserTransaction.java:140)
            at org.jboss.seam.transaction.UTTransaction.commit(UTTransaction.java:52
    )
            at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListen
    er.java:592)
            at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(Sea
    mPhaseListener.java:330)
            at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListe
    ner.java:231)
            at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.jav
    a:182)
            at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:280)
            at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
     
            at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(Rec
    eiveSendUpdates.java:57)
            at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(Receive
    SendUpdates.java:45)
            at com.icesoft.faces.webapp.http.core.IDVerifier.service(IDVerifier.java
    :25)
            at com.icesoft.faces.webapp.http.core.ViewBoundServer.service(ViewBoundS
    erver.java:52)
    Si quelqu'un peut me dire d'où cela peut venir.

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 74
    Points : 83
    Points
    83
    Par défaut
    tu demande à supprimer un objet: c'est bien... mais il semblerait que cet objet java soit toujours référencé dans ton graphe d'objet persistant, il essaye donc de le synchroniser... vérifié que le doc n'est plus référencé nulle part...


    Citation Envoyé par bard123 Voir le message
    Salut,

    j'utilise le framework seam : jboss-seam-2.0.1.GA et le serveur d'application JBoss-4.2.0.GA

    Je développe des EJB session bean, et j'ai un problème lorsque je veux supprimer un enregistrement de la base de données avec la méthode em.remove.

    Voici le code qui permet de supprimer un document (je considére qu'un document à une liste de tag et un tag correspond une liste de document)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public void supprimerDocument(Document document) {
     
    		Document doc = em.find(Document.class, document.getId());
     
                    this.getListeDocument().remove(doc);
     
    		Set<Tag> tags = this.listeTag(document.getNom());
    		Iterator<Tag> iterator = tags.iterator();
    		while(iterator.hasNext()){
     
    			Tag t = iterator.next();
     
    			t = em.find(Tag.class, t.getId());
    			System.err.println("nom du tag = "+t.getNom());
    			doc.getTag().remove(t);
    			t.getDocument().remove(doc);
    		}
     
    		System.err.println("ATTENTION : suppression");
    		em.flush();
    		em.refresh(doc);
     
    		em.remove(doc);
     
    		doc=null;
     
    		//em.remove(em.find(Document.class, doc.getId()));
    		System.err.println("ATTENTION : suppression effectué");
    }
    Mais voici l'erreur qui s'affiche dans la console windows :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    09:24:16,031 WARN  [arjLoggerI18N] [com.arjuna.ats.arjuna.coordinator.TwoPhaseCo
    ordinator_2] TwoPhaseCoordinator.beforeCompletion - failed for com.arjuna.ats.in
    ternal.jta.resources.arjunacore.SynchronizationImple@a1bced
    javax.persistence.EntityNotFoundException: deleted entity passed to persist: [en
    tityBeans.Document#<null>]
            at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException
    (AbstractEntityManagerImpl.java:613)
            at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(Abstra
    ctEntityManagerImpl.java:524)
            at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple
    .beforeCompletion(SynchronizationImple.java:114)
            at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletio
    n(TwoPhaseCoordinator.java:249)
            at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoo
    rdinator.java:88)
            at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
            at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.c
    ommitAndDisassociate(TransactionImple.java:1256)
            at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.co
    mmit(BaseTransaction.java:135)
            at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTra
    nsactionManagerDelegate.java:87)
            at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.commit(Serve
    rVMClientUserTransaction.java:140)
            at org.jboss.seam.transaction.UTTransaction.commit(UTTransaction.java:52
    )
            at org.jboss.seam.jsf.SeamPhaseListener.commitOrRollback(SeamPhaseListen
    er.java:592)
            at org.jboss.seam.jsf.SeamPhaseListener.handleTransactionsAfterPhase(Sea
    mPhaseListener.java:330)
            at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListe
    ner.java:231)
            at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.jav
    a:182)
            at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:280)
            at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
     
            at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(Rec
    eiveSendUpdates.java:57)
            at com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(Receive
    SendUpdates.java:45)
            at com.icesoft.faces.webapp.http.core.IDVerifier.service(IDVerifier.java
    :25)
            at com.icesoft.faces.webapp.http.core.ViewBoundServer.service(ViewBoundS
    erver.java:52)
    Si quelqu'un peut me dire d'où cela peut venir.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/09/2012, 11h26
  2. Add and remove un projet seam to tomcat
    Par thierryler dans le forum Seam
    Réponses: 1
    Dernier message: 27/06/2011, 13h53
  3. Framework Seam Ou Spring ?
    Par pioug dans le forum Frameworks Web
    Réponses: 1
    Dernier message: 18/04/2010, 21h47
  4. [integration Drools & JSF ] Seam Framework ?
    Par badoress dans le forum JSF
    Réponses: 5
    Dernier message: 13/10/2009, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo