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 :

Question concernant la suppression avec JPA


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Par défaut Question concernant la suppression avec JPA
    bonsoir,

    J'ai deux entités en relation bidirectionnelle @OneToMany.
    Je veux que si je supprime une instance de l'entité parent (qui contient l'annotation @OneToMany), tous les instances de l'entité fils qui sont affétés à ce parent ne seront pas supprimés mais seront libres (affectés à aucun parent).

    "cascade=cascadeType.REMOVE" entraine la suppression des fils. J'aime savoir s'il y a un autre type qui répond à mon besoin.

  2. #2
    Membre confirmé Avatar de Lordsephiroth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Par défaut
    Salut,

    L'API Java EE contient les réponses à ce genre de question. Tu n'as pas précisé la version, aussi j'ai regardé l'API de l'annotation @OneToMany en version Java EE 6.

    http://java.sun.com/javaee/6/docs/ap...#cascade%28%29

    Dans la desctiption de l'option "cascade", il est précisé :

    cascade
    public abstract CascadeType[] cascade
    (Optional) The operations that must be cascaded to the target of the association.
    Defaults to no operations being cascaded.
    En traduction si tu n'aimes pas la langue de Shakespeare, il suffit de ne pas mettre l'annotation pour que la valeur par défaut soit mise à "pas de suppression en cascade".

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Par défaut
    Citation Envoyé par mayna87 Voir le message
    bonsoir,

    J'ai deux entités en relation bidirectionnelle @OneToMany.
    Je veux que si je supprime une instance de l'entité parent (qui contient l'annotation @OneToMany), tous les instances de l'entité fils qui sont affétés à ce parent ne seront pas supprimés mais seront libres (affectés à aucun parent).

    "cascade=cascadeType.REMOVE" entraine la suppression des fils. J'aime savoir s'il y a un autre type qui répond à mon besoin.
    D'abord j'ai une remarque, vous dites ceci :
    Citation Envoyé par Lordsephiroth Voir le message
    J'ai deux entités en relation bidirectionnelle @OneToMany.
    Je ne sais pas comment vous faites cela, mais il faut noter que dans la norme JPA 2 une telle relation (OneToMany) ne peut pas être bidirectionnelle à moins de passer par une table de jointure.
    Qu'est ce que vous appelez 'bidirectionnelle' ?
    Pourriez nous montrer votre mapping ?

    Sinon, comme l'a ci bien dit Lordsephiroth, il suffit juste de ne pas mettre cascade=cascadeType.REMOVE et tout est réglé. Mais attention à la contrainte d'intégrité sur tes clés étrangères (toutes les clés étrangères de l'objet à supprimer doivent être mises à NULL avant la suppression).

  4. #4
    Membre confirmé Avatar de Lordsephiroth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Par défaut
    Je crois que Mayna a raison sur le terme, une contrainte bidirectionnelle indique simplement qu'elle est référencée dans les deux objets (donc que dans l'un des objet une annotation @OneToMany reflète l'annotation @ManyToOne de l'autre objet).

    JPA supporte très bien qu'une annotation @OneToMany soit présente dans un entity mais que l'entity lié ne contienne pas de @ManyToOne. Je pense que dans ce cas on peut dire que la relation est unidirectionnelle, on ne peut naviguer que dans un sens.

    J'espère que je ne me plante pas totalement en disant ça, c'est surtout une question de terminologie.

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/11/2011, 10h28
  2. [DOM] Question concernant dom et les attributs avec java
    Par zemzoum89 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 30/09/2010, 20h18
  3. Réponses: 1
    Dernier message: 20/08/2007, 21h33
  4. suppression avec sous requête conditionnelle
    Par melmel dans le forum Requêtes
    Réponses: 8
    Dernier message: 18/03/2004, 23h20
  5. Question concernant l'API "WaitforSingleObject
    Par Drooxy dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 29/03/2003, 07h26

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