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

Hibernate Java Discussion :

Mapping hibernate en xml [Mapping]


Sujet :

Hibernate Java

  1. #1
    Membre expert
    Avatar de Samuel_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2012
    Messages : 376
    Points : 3 177
    Points
    3 177
    Billets dans le blog
    1
    Par défaut Mapping hibernate en xml
    Bonjour,

    j'ai une classe père P et une classe fils F. Un père peut contenir plusieurs fils mais un fils ne peut avoir qu'un père.

    Supposons ce déroulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Pere p = new Pere();
    save ( p );
    --> enregistre p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Pere p = getPereFromBdd();
    Fils f = new Fils();
    f.setPere( p );
    p.addFils( f );
    save ( f );
    Comment peut on effectuer le mapping pour que lors du save du fils, seulement le fils soit mis à jour et qu'aucune requête ne modifie le père même si l'on a changé son nom par exemple ?

    Ne pas oublier mais aussi

    "L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai "

  2. #2
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    Bonjour,

    Je n'utilise pas Hibernate mais il n'y aurait pas moyen de faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Pere p = getPereFromBdd();
    Fils f = new Fils();
    f.getPere().setIdPere(p.getId());
    p.addFils( f );
    save ( f );
    ?
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  3. #3
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 54
    Points
    54
    Par défaut
    Effectivement, on peut faire cela, mais cela n'empêche pas de "propager" l'enregistrement et donc d'enregistrer le père. Je me demande donc si une config de mapping spécifique permettrait de ne pas enregistrer le père. Ou alors, il faut simplement faire des requêtes "à la main" ?

  4. #4
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut,
    j´avoue n´avoir pas bien compris le sens de ta question mais, si tu veux tout simplement sauvegarder le fils sans modifier de pere,
    alors:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Pere p = getPereFromBdd();
      Fils f = new Fils();
      p.addFils( f );
      save ( p );
    la cela supposerait qu´il y ait un mapping entre le pere et le fils avec Fils qui a comme cle etrangere, celle du Pere avec la cascade ALL par exemple.


    Eric

  5. #5
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      Pere p = getPereFromBdd();
      /*ici on n'ajoute du traitement sur le père, on modifie son nom par exemple*/
     
      Fils f = new Fils();
      p.addFils( f );
      save ( p );
    en faisant ce code là, le père sera réenregistré avec les données modifiées (ici son nom par exemple). Moi, je veux simplement enregistrer le fils et créer le lien entre le père et le fils (clé étrangère dans la table fils).

  6. #6
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    alors tu fais simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Pere p = getPereFromBdd();
      Fils f = new Fils();
      f.setPere(p);
      save(f);
    et c´est tout.

  7. #7
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 54
    Points
    54
    Par défaut
    excusez moi, j'ai tout dit à l'envers. En réalité, je considère qu'un fils peut vivre sans son père (clé étrangère à null) et qu'un père n'a qu'un seul et unique fils. (relation one to one donc, avec la clé étrangère sur le fils)

    Je crée donc un fils, avec fk à null. save (f);

    Je crée un père. Je veux faire un save(p), enregistrer la clé étrangère dans le fils mais surtout ne pas mettre à jour complètement le fils (ie : si son nom change côté java, en base il ne change pas)

    Désolée pour l'erreur, j'avais tout raconté à l'envers

  8. #8
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut,
    Si tu recuperes le fils de la base de donnees, et que tu lui attribues un pere et que tu sauvegardes le fils, alors aucun Probleme.

  9. #9
    Membre du Club
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Avril 2012
    Messages : 22
    Points : 54
    Points
    54
    Par défaut
    Effectivement, en gérant bien les cascade et les mutable ça fonctionne. merci

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

Discussions similaires

  1. [Mapping] Problème de mapping Hibernate XML
    Par khoukha83 dans le forum Hibernate
    Réponses: 1
    Dernier message: 18/10/2012, 13h14
  2. Réponses: 4
    Dernier message: 04/03/2009, 13h45
  3. mapping Hibernate + fichier.hbm.xml
    Par skillipo dans le forum Hibernate
    Réponses: 1
    Dernier message: 01/02/2008, 11h57
  4. [Tomcat][hibernate] Pb initialisation hibernate.cfg.xml
    Par the.chojin dans le forum Tomcat et TomEE
    Réponses: 15
    Dernier message: 11/02/2005, 18h29
  5. hibernate.cfg.xml
    Par hbrice dans le forum Hibernate
    Réponses: 2
    Dernier message: 20/01/2005, 16h31

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