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