L'entité doit être géré à l'appel de supprimer
Ce qui se passe ici?
@Stateless
@LocalBean
public class AppointmentCommentDao {
public void delete(long appointmentCommentId) {
AppointmentComment ac = em.find(AppointmentComment.class, appointmentCommentId);
if (ac != null)
{
em.merge(ac);
em.remove(ac);
}
}
@PersistenceContext
private EntityManager em;
}
Sur l'appel à remove
- je obtenir une IllegalArgumentException
avec le message Entity must be managed to call remove: ...., try merging the detached and try the remove again.
Résolu avec em.trouver(...) de la méthode.
OriginalL'auteur Steve Taylor | 2012-02-18
Vous devez vous connecter pour publier un commentaire.
Dans votre cas de fusion n'est pas nécessaire, parce que ca n'est pas deattached dans n'importe quel point entre em.trouver et em.supprimer.
En général lorsque l'entité est deattached, EntityManager la méthode de de fusion prend entité comme argument et retourne l'instance gérée. L'entité donnée en argument n'a pas à se transformer pour être fixé. Ceci est expliqué par exemple ici: L'EntityManager.fusion. Vous devez aller pour:
Je ne prenez pas votre point de vue, cependant, que vous êtes censé utiliser l'objet retourné à partir de la fusion de l'avenir, pas le passé dans l'objet. +1
Vous avez absolument raison, ton code devrait fonctionner sans fusion, parce que ca n'est pas deattached en tout point. J'ai d'abord supposé que c'était trop simpliste exemple. Je vais mettre à jour la réponse.
Fonctionne parfaitement pour la nouvelle entité de référence. Je vous remercie.
OriginalL'auteur Mikko Maunu
Essayez ceci:
OriginalL'auteur Ismac