EntityManager jette TransactionRequiredException sur merge() dans JBoss bean JSF

J'ai mis en place une application JSF sur JBoss 5.0.1 GA présenter une liste d'Utilisateurs dans une table et de permettre la suppression des utilisateurs individuels via un bouton à côté de chaque utilisateur.

Quand deleteUser est appelé, l'appel est passé à un UserDAOBean qui obtient un EntityManager injecté à partir de JBoss.

Je suis en utilisant le code

public void delete(E entity)
{
    em.remove(em.merge(entity));
}

pour supprimer l'utilisateur (code a c&p à partir d'un tutoriel JPA). Juste appeler em.supprimer(entité) n'a aucun effet et provoque toujours la même exception.

Lorsque cette ligne est atteint, je suis un TransactionRequiredException:

(en ignorant apparemment sans intérêt stacktrace-stuff)

...

20:38:06,406 ERREUR [[Faces Servlet]]
Servlet.service() de la servlet Visages
Servlet jeté exception
javax.la persistance.TransactionRequiredException:
EntityManager doivent être accessibles, dans un
transaction à
org.jboss.jpa.le déploiement.ManagedEntityManagerFactory.verifyInTx(ManagedEntityManagerFactory.java:155)
au
org.jboss.jpa.tx.TransactionScopedEntityManager.de fusion(TransactionScopedEntityManager.java:192)
au
à l'.fhj.l'imt.utils.DAOImplTemplate.supprimer(DAOImplTemplate.java:54)
au
à l'.fhj.l'imt.UserBean.supprimer(UserBean.java:53)
au
soleil.de réfléchir.NativeMethodAccessorImpl.invoke0(Native
La méthode)

...

J'ai déjà essayé d'envelopper un gérés manuellement transaction (em.getTransaction().begin() + .commit() ) autour d'elle, mais cela a échoué car il n'est pas permis dans les conteneur JBoss. Je n'avais pas de succès avec un usertransaction. Des recherches sur le web pour cette question aussi mis en place aucun cas similaire et la solution.

Quelqu'un a vécu quelque chose de semblable avant et trouvé une solution à cela?

"J'ai déjà essayé d'envelopper d'une transaction autour d'elle, mais cela a échoué car il n'est pas permis dans les conteneur JBoss." - ce n'est pas permis? Les Transactions? Pas vrai. Veuillez mettre à jour et de expliquer cela plus en détail.
Et pourquoi pensez-vous qu'il est nécessaire de fusionner avant la suppression d'un objet? Si quelque chose est mal, je serais en désaccord avec ça.
Précisé (je l'espère). Je voulais dire à la gestion manuelle des transactions sur l'EntityManager. En outre, le supprimer(merge()) est présent dans tous les exemples sur le web (même pour Oracle). Néanmoins, essayé un simple de supprimer ce qui provoque toujours la même exception.
Je ne pense pas que je recommande à fusionner. Le sortir et de voir si votre situation s'améliore.
Non, il n'est pas. Désolé.

OriginalL'auteur Kosi2801 | 2009-07-05