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 manytomany attribut supplémentaire


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut jpa manytomany attribut supplémentaire
    Bonjour,

    J'ai un petit soucis. J'essaye de représenter une relation avec pojo et jpapour faire le mapping suivant :

    table A :
    id_a (PK)
    nom_a

    table B :
    id_b (PK)
    nom_b

    table intermédiaire :
    id_a(PK), id_b(PK)
    quantity

    Quelqu'un a t'il trouvé une solution claire?
    J'ai cherché mais c'est jamais très clair.

    Si la table intermédiaire ne contenait pas d'attribut supplémentaire( quantity), il suffirait d'utiliser l'annotation manytomany et le tour serait joué.

    Ma table intermédiaire contient une clé composite.

    Je voudrais que ma modélisation me permette:
    quand je supprime un élément de la table a ou de la table b,il faudrait que l'élément de la table intermédiaire soit supprimé par cascade

    Merci

  2. #2
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut Solution EJB3 avec Attribut
    Bonjour,

    J'ai suivi une précédente conversation sur le ManyToMany, et effectivement les docs sont mal documentées. J'ai trouvé la solution en utilisant netbeans 6, j'ai construis mes tables avec du bon vieux SQL de chez Oracle, afin de contrôler mes relations ( trigger, séquences ...) et j'ai créé mes POJO en utilisant l'outil de netbeans.

    Effectivement, je te donne le code générer pour une table intermédiaire N*N avec attribut ( si pas d'attribut, cette table ne doit pas exister JPA )
    .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    public class Cellulecompdom implements Serializable {
        private static final long serialVersionUID = 1L;
     
        @GeneratedValue(strategy=GenerationType.SEQUENCE,generator = "CELLULESEQ")
     
        @Id
        @Column(name = "ID", nullable = false)
        private BigDecimal id;
        @Column(name = "COMMENTAIRE")
        private String commentaire;
        @JoinColumn(name = "COMPETENCE_ID", referencedColumnName = "ID")
        @ManyToOne
        private Competence competenceId;
        @JoinColumn(name = "DOMAINE_ID", referencedColumnName = "ID")
        @ManyToOne
        private Domaine domaineId;
     
    ..........
    Tu regardes l'attribut "COMMENTAIRE"
    voila voila

    COnseil : C'est pas magique le retro pompage de netbeans, j'ai repris mes POJOS un par un afin de les faire coller à mon modèle, il y a des manques, mais cela permet d'avoir une structure cohérente rapide.
    Après suivant l'héritage, composition ... il faut faire des choix avec des annotations ou de nouvelles tables.

    olivier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 188
    Par défaut
    Merci pour ta réponse.
    Par contre, tu précises pas le nom des tables.
    Je suppose qu'il faut faire correspondre la classe à la table de jointure en utilisant l'annotation @Table(name="nom table").

    Et les id competence_id et domaine_id doivent sûrement avoir un lien avec leurs tables respectifs par l'annotation @JoinTable?

    Et les attributs de ta table sont les entités domaines et competence alors que leurs noms sont des id. Les attributs ne seraient ils pas des Integer correspondants seulement aux Id?

  4. #4
    Membre Expert Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Par défaut Oui réponse partielle
    Bonjour,

    Oui, je t'ai fais une réponse partielle, il manque le début @Table ...
    et la fin, je t'ai montré que la partie intéressante.

    Utilise netbeans, c'est magique, il t'importe même les classes dépendantes
    et c'est mieux qu'un long discours.

    EJB3/JPA1.0/GLASSFISH/Toplink/JSF/Oracle

    olivier

Discussions similaires

  1. [2.x] Doctrine v~2.2 | manyToMany avec attributs supplémentaires
    Par foolib dans le forum Symfony
    Réponses: 1
    Dernier message: 24/03/2015, 17h15
  2. [TinyMCE] links / img avec attributs supplémentaires
    Par BlindeKinder dans le forum Bibliothèques & Frameworks
    Réponses: 9
    Dernier message: 17/05/2011, 18h19
  3. Hibernate/JPA: ManyToMany, mise à jour dans une table de jointure.
    Par PhilippeGibault dans le forum Hibernate
    Réponses: 1
    Dernier message: 19/04/2011, 14h40
  4. requete nommé JPA probleme attribut
    Par cris83500 dans le forum JPA
    Réponses: 1
    Dernier message: 13/01/2010, 12h01
  5. [HTML] attributs supplémentaires
    Par Sayrus dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/03/2007, 14h26

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