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 :

Primary Key et Foreign Key dans la même Entity


Sujet :

JPA Java

  1. #1
    LTN
    LTN est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 33
    Points : 29
    Points
    29
    Par défaut Primary Key et Foreign Key dans la même Entity
    Bonjour,

    Je suis entrain d'étudier les EJB3 et je me creuse la tâte sur un cas.

    J'ai une table PERSONNE contenant 3 champs :
    - ID_PERSONNE ( Clé primaire)
    - NOM_PERSONNE ( Nom de la personne)
    - ID_PARENT (id du parent)

    Disons que mes données à insérer en table sont les suivantes :
    Jean a deux filles Carole et Marie
    Jean (ID_PERSONNE = 1, ID_PARENT=0)
    Carole (ID_PERSONNE =2 , ID_PARENT=1)
    Marie (ID_PERSONNE = 3, ID_PARENT=1)

    Un extrait de l' Entity Personne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        @Id
        @Column(name = "ID_PERSONNE", nullable = false)
        @GeneratedValue(strategy = GenerationType.AUTO)
        private long _id;
     
        @Column(name = "ID_PARENT", nullable = true)
        private long _parentId = 0;
     
        @Column(name = "NOM_PERSONNE", nullable = false)
        private String _name;
     
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "_parentId")
        private List<Personne> _listOfChildren = new ArrayList<Personne>();
    Avec la contrainte du @OneToMany, je n'arrive pas à insérer mes données en base (org.hibernate.exception.ConstraintViolationException).

    Pourriez vous m'aider s'il vous plaît ? Merci d'avance

  2. #2
    LTN
    LTN est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    J'ai trouvé la solution. Il faut que le _parentId soit nulle quand il n'y a pas de valeur (et non zéro).

    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
     
        @Id
        @Column(name = "ID_PERSONNE", nullable = false)
        @GeneratedValue(strategy = GenerationType.AUTO)
        private long _id;
     
        @Column(name = "ID_PARENT", nullable = true)
        private Long _parentId = null;
     
        @Column(name = "NOM_PERSONNE", nullable = false)
        private String _name;
     
       @OneToMany(cascade = CascadeType.ALL, mappedBy = "_parentId",
    targetEntity=Personne.class)
        private List<Personne> _listOfChildren = new ArrayList<Personne>();

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

Discussions similaires

  1. Probleme avec les contraintes primary key et foreign key
    Par haylox dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2013, 14h23
  2. Inclure foreign key dans une primary key?
    Par Timo31 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/07/2011, 16h02
  3. Réponses: 4
    Dernier message: 11/03/2011, 17h04
  4. PRIMARY KEY et FOREIGN KEY sur la même colonne ?
    Par SpecialCharacter dans le forum Outils
    Réponses: 4
    Dernier message: 31/01/2008, 17h35
  5. Foreign key entre 2 schémas d'une même BD?
    Par mona dans le forum Oracle
    Réponses: 2
    Dernier message: 14/10/2005, 19h58

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