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 :

Relation 0n - 0n - Multiple persist


Sujet :

JPA Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 33
    Points : 17
    Points
    17
    Par défaut Relation 0n - 0n - Multiple persist
    Bonjour à tous ! ( ou re à ceux déjà croisés )

    Lors de mon projet JEE j'ai une relation 0n-0n entre deux tables : Periode et Jours

    Ma table Période :
    idPeriod (INT)
    name_Period(VARCHAR)
    idcolor_period(INT (clé étrangère avec l'id d'une autre table couleur).

    Ma table Jour :
    idJour (INT)
    dateJour (DATE)

    CdC du client : une période peut avoir de 0 à n jour |et| un jour peut correspondre au minimum à 0 période et au max à n période.

    Donc suite à cette relation, j'ai une table faisant la liaison entre l'id d'une période et l'id d'un jour.


    Ma question : Comment dois-je procéder pour faire un persist multiple ?

    Je m'explique, quand je veux créer une nouvelle période, je dois aussi créer un jour, et ainsi créer aussi une ligne dans ma table de liaison.
    Donc comment puis-je faire pour quand je persiste ma période, persister en même temps mon jour et ma ligne dans ma table de liaison svp? Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Je suppose qu'au niveau de ton mapping tu a mis dans periode une propriété de type

    avec les annotations @ManyToMany qui référencent la table Jour et la class Liaison.

    Pour que les jours se sauvent automatiquement, il faut ajouter une cascade sur la liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @ManyToOne(cascade = {CascadeType.PERSIST,CascadeType.MERGE})

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Actuellement j'ai : List<Jour> jours .

    Suis-je obligé de faire une classe de liaison? ne puis-je pas simplement persister mes deux ID dans ma table de liaison quand je persiste ma période?

    En fait je ne sais pas comment mapper ma liste ( je début en jpa donc les annotations .. )

    Et le cascade fonctionne comment pour savoir où insérer la donnée ?

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Sharym Voir le message
    Actuellement j'ai : List<Jour> jours .
    Fonctionne comme le Set sauf que la table de liaison doit avoir une troisième colonne pour la position dans la liste.
    Citation Envoyé par Sharym Voir le message
    Suis-je obligé de faire une classe de liaison?
    Non, d'ailleur le mapping manytomany ne demande pas de classe de liaison par défaut

    Citation Envoyé par Sharym Voir le message
    En fait je ne sais pas comment mapper ma liste ( je début en jpa donc les annotations .. )
    Il y a un exemple complet dans la javadoc de l'annotation @ManyToMany
    Citation Envoyé par Sharym Voir le message
    Et le cascade fonctionne comment pour savoir où insérer la donnée ?
    Je ne comprend pas ta question, le cascade sert juste à dire "l'opération X que l'on fait (ici persist() et merge()) à l'entité (ici Periode), on le fait aussi aux entité liées (ici Jour) automatiquement"

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Ah donc avec le cascade que je met sur ma liste, si je fais un persist de ma période, il va persister aussi dans la table de liaison, ou il va persister ma liste ? J'ai du mal à comprendre comment ça fonctionne

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Avec le cascade il va juste t'éviter d'avoir a faire un persist manuel sur chacun de test jours que tu viens de créer. C'est tout. La table de liaison, c'est le boulot des annotations @ManyToMany et @JoinTable.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Auriez vous un bout de code ou indice pour @manytomany et @jointable pour la table de liaison svp? je débute en jpa

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Il y a un exemple complet dans la javadoc de l'annotation @ManyToMany

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2014
    Messages : 33
    Points : 17
    Points
    17
    Par défaut
    Je vais voir ça merci !
    Mais est-il possible de faire cela (une table de jointure entre les deux table) mais que dans mon appli je n'ai qu'une classe ? Vu que mon entité jour ne contient qu'un id et une date je ne souhaiterai pas faire de classe jour. Juste persister un jour dans ma base quand j'ajoute une période?

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Il y a http://docs.oracle.com/javaee/6/api/...ollection.html mais j'ignore comment c'est mappé par JPA.

Discussions similaires

  1. Relations avec jointures multiples
    Par verbose dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/06/2014, 16h45
  2. Problème de récursivité : relation père fils multiple
    Par relbeghdadi dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/01/2012, 12h37
  3. Relations maitre/détail multiples : possible ?
    Par engi dans le forum Langage SQL
    Réponses: 9
    Dernier message: 02/07/2009, 11h07

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