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

Java EE Discussion :

Clé étrangère ayant le même nom que la clé primaire [EJB3 Entity]


Sujet :

Java EE

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut Clé étrangère ayant le même nom que la clé primaire
    Bonjour,

    Je cherche à créer une table de liaison qui à pour clé étrangère sa clé primaire. Mes deux clés doivent avoir le même nom.
    Or soit j'arive à obtenir deux clés avec des noms différents, soit une clé qui soit à la fois clé primaire et étrangère mais qui ne porte pas le nom que je désire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @Entity
    @Table(name="TASK")
    public class Task implements Serializable{
     
    @Id
    @Column(name="TASK_ID", length=36)
    private String task_id;
     
    @OneToOne(mappedBy="task",cascade={cascadeType.ALL})
    private Barrage_JT barrageJT;
    ...
    et dans mon autre classe j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @Entity
    @Table(name="BARRAGE_JT")
    public class Barrage_JT implements Serializable{
     
    @Id
    @Column(name="TASK_ID")
    private String task_id;
     
    @OneToOne(fetch=fetchType.EAGER)
    private Task task;
    ...
    dans ce cas je me retrouve avec une clé primaire TASK_ID et une clé étrangère TASK_TASK_ID, mais si je change le nom de la colonne dans la classe Barrage_JT, je me retrouve bien avec une seule colonne mais qui porte le nom TASK_TASK_ID. Or il faut que ma clé s'apele TASK_ID.

    Pouvez vous m'aider?

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 152
    Points : 264
    Points
    264
    Par défaut
    c'est une association réflexive que tu cherches à faire ?
    Si oui, je ne vois pas pourquoi tu fais 2 classes, une seule suffit. Cette classe pourrait être la suivante:

    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
    20
     
    public class MyClass implements Serializable
    {
          @Id
          @GeneratedValue(strategy=GenerationType.INDENTITY)
          private int id;
     
          @Column(name="myColumn")
          private String nom;
     
          @ManyToOne
          @JoinColumn(name="myclass_fk")
          private int id_fk;
     
          /*
          ....
          la suite du code 
          ....
          */
    }
    De plus, je te conseille vivement de ne pas utiliser de type String pour un identifiant. Un type long ou int est recommandé (surtout concernant les "règles" de mise en place d'une base de données décrites dans Merise mais c'est un autre sujet). D'autant plus qu'il est plus facile d'utiliser ces types pour une génération automatique avec l'annotation @GeneratedValue.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2003
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 54
    Points : 31
    Points
    31
    Par défaut
    merci bien, je suis d'accord avec toi sur le type des identifiants, mais je dois reproduire une base existante, je ne peux donc y toucher. mon problème a été résolu grâce à l'héritage et l'ajout de @Inheritance(strategy=InheritanceType.JOINED) dans chacune des classes, ainsi que la suppression de la relation @OneToOne

    merci quand même!

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 152
    Points : 264
    Points
    264
    Par défaut
    Dans ce cas, met le poste en [RESOLU]

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

Discussions similaires

  1. Charger 2 dlls ayant le même nom
    Par kurtisnotdead dans le forum Framework .NET
    Réponses: 4
    Dernier message: 14/05/2008, 14h40
  2. variable d'une structure de même nom que la structure ?
    Par Bakura dans le forum Visual C++
    Réponses: 7
    Dernier message: 28/01/2007, 23h15
  3. Réponses: 2
    Dernier message: 05/09/2006, 11h08
  4. Controller CheckBoxes ayant le même nom.
    Par JFKen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/08/2006, 11h19
  5. Obtenir les enregistrements ayant le même nom et prénom
    Par llc123 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 11/07/2006, 16h47

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