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

JPA Java Discussion :

JPA EntityManager persist() and remove()


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Par défaut JPA EntityManager persist() and remove()
    Bonjour,

    Je me pose une question sur la façon avec laquelle la persistance est réalisé avec JPA.

    Supposons que j'ai un objet qui contient attribut avec List<Object>, si je supprime des lignes de cette liste, est ce que EntityManager.persist(MonObjet) suffira pour les supprimées ?

    Dois je absolument passer par remove() des object fils pour vider certaines lignes de la liste ?

    Merci par avance de votre retour.

  2. #2
    Membre expérimenté Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Par défaut
    Bonjour,

    Tout dépend de ce que tu cherche a réaliser lors de ton persist ou ton merge.

    L'attribut cascade des relations OneToMany, ManyToOne et ManyToMany te permet de définir quels sont les actions a réaliser pour de ces liaisons.

    Après il faut faire attention quand on utilise le cascade car il est souvent source de bug s'il est utiliser a tord ou a travers.

  3. #3
    Membre éclairé Avatar de aelmalki
    Inscrit en
    Mars 2009
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 250
    Par défaut
    Pour moi, j'utilise déjà un Cascade JPA pour l'insertion, la modification et la suppression, pour les deux premiers cas, y a pas de problème, par contre pour la suppression, l'objet est supprimer de la ManyToOne mais il n'est pas supprimer de la base de données (pas de requête DELETE dans le out Hibernate)

    Finalement, il faut spécifier le Cascade Hibernate pour que la suppression soit effective sur la base de données, j'ai ajouté un Cascade avec les attributs suivant et ça marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    import org.hibernate.annotations.Cascade;
    ...
    @Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
                org.hibernate.annotations.CascadeType.DELETE,
                org.hibernate.annotations.CascadeType.MERGE,
                org.hibernate.annotations.CascadeType.PERSIST,
                org.hibernate.annotations.CascadeType.DELETE_ORPHAN})

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

Discussions similaires

  1. entityManager.persist et transaction
    Par Invité(e) dans le forum JPA
    Réponses: 6
    Dernier message: 09/11/2011, 11h37
  2. Réponses: 5
    Dernier message: 24/05/2011, 10h27
  3. n EntityManager.persist <-> 1 insert
    Par gontard dans le forum JPA
    Réponses: 11
    Dernier message: 01/07/2010, 12h32
  4. jpa manytoOne persist
    Par ichigoo dans le forum JPA
    Réponses: 4
    Dernier message: 19/02/2009, 21h57
  5. Tomcat + JPA (javax.persistence)
    Par balmeyer dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 01/02/2007, 13h00

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