Pourquoi suis-je supprimé instance passée à fusionner les, lors de la fusion de l'entité premier
Je crois que l'entité que je souhaite supprimer, est une entité gérée. Mais, peu importe, pourquoi la fusion est-il alors de l'enlever de me donner le message d'erreur suivant:
supprimé instance passée de fusionner
Quelqu'un a dit sur stackoverflow que l'opération de fusion doit être ignorée si elle est une entité gérée. Alors pourquoi n'est-ce pas d'être ignoré?
La façon dont je souhaite supprimer c'est comme si:
TrialUser mergedEntity = em.merge(tu);
em.remove(mergedEntity);
Mais cette erreur, mais si je me débarrasser de la première ligne, il semble bien fonctionner. Mais je veux l'autre sens parce que c'est cohérent avec le reste du code.
EDIT:
@PersistenceContext(unitName = "UnitName")
protected EntityManager entityManager;
@Table(name="TRIAL_USER")
@Id
private BigDecimal id;
@ManyToOne(cascade= {CascadeType.ALL }, fetch=FetchType.EAGER)
@JoinColumn(name="TRIAL_USER_CLASS_ID3")
private TrialUserElement trialUserElement3;
@ManyToOne(cascade= {CascadeType.ALL }, fetch=FetchType.EAGER)
@JoinColumn(name="TRIAL_USER_CLASS_ID1")
private TrialUserElement trialUserElement1;
@ManyToOne(cascade= {CascadeType.ALL }, fetch=FetchType.EAGER)
@JoinColumn(name="TRIAL_USER_CLASS_ID2")
private TrialUserElement trialUserElement2;
Vous pouvez poster votre plein JPA session (depuis le début jusqu'à la fin de l'EntityManager, et les principales parties de votre classe d'Entité (c'est à dire la propriété ID et toutes les relations).
Il a été édité. J'utilise le contexte de persistance, de sorte que la fermeture et la validation n'est pas nécessaire.
Pour le rendre clair, vous êtes l'aide de la transaction dans l'étendue du container-managed contexte de persistance. Quelle valeur vous donne
Il a été édité. J'utilise le contexte de persistance, de sorte que la fermeture et la validation n'est pas nécessaire.
Pour le rendre clair, vous êtes l'aide de la transaction dans l'étendue du container-managed contexte de persistance. Quelle valeur vous donne
boolean isManaged = entityManager.contains(mergedEntity);
si elle est placée dans le milieu de fusionner et supprimer des lignes? btw. par souci de clarté, il serait bon de coller un bon et code compilable (vous avez doublé trialUserElement1
) et fractionnement de l'extrait de code en deux classes (gestion de haricot annoté avec @PersistenceContext
et entity bean annoté avec @Entity
).
OriginalL'auteur Rika | 2014-10-15
Vous devez vous connecter pour publier un commentaire.
Vous pouvez avoir ce message d'erreur lorsque vous exécutez le code dans une transaction, lorsque vous vous engager à la fin de la og de la méthode.
Lors de l'utilisation de printemps dans une méthode ou une classe annotée avec
Cela se produit parce que vous d'abord de supprimer l'objet (sans validation) et ensuite essayer de le mettre à jour.
ce code génère l'exception:
Pour éviter l'erreur, vous ne devez pas supprimer puis de l'enregistrer dans la même transaction.
OriginalL'auteur Spyna
Cela est un peu d'un coup de feu dans l'obscurité que je ne peux pas exécuter votre code, et ces types de problèmes peuvent être un peu complexe. Mais rassurez-vous qu'elle devrait être bon pour fusionner et supprimer ensuite. Je pense qu'elle peut être liée à votre beaucoup à l'une de ses entités associées.
Au moment où la transaction est validée, la supprimer est en train d'être mis en cascade pour les entités liées.
Même si la fusion est redondante pour votre entité mère, je pense que la fusion est en train d'être mis en cascade pour l'enfant entités, qui ont été supprimés, d'où l'exception.
Essayez de changer votre cascade règles - le tirer en arrière pour CascadeType.De FUSION (pour les trois) et voir si vous obtenez toujours l'exception. Ou le changement de CascadeType.SUPPRIMER, cela permettra d'éviter la nécessaire fusion étant en cascade.
OriginalL'auteur Dick Chesterwood
La JPA SPEC dit que:
C'est pourquoi vous ne pouvez pas fusionner un supprimée entité.
OriginalL'auteur uaiHebert