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 :

Contrainte de clef étrangère


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité(e)
    Invité(e)
    Par défaut Contrainte de clef étrangère
    Bonjour,

    voila je migre une petite application EJB2 en EJB3 et je m'aperçoit que la base de donnée générée n'est pas la même !

    En EJB3 j'ai deux tables de plus pour les références de clef étrangère.

    voici les classes de mes deux programmes EJB2 et EJB3

    Auteurs
    Priorites
    Taches

    voici les bases générées:

    En EJB2
    +Auteurs
    -id
    -nom
    -prenom

    +Priorites
    -id
    -type

    +Taches
    -id
    -commentaire
    -priorite_id
    -auteur_id

    En EJB3

    +Auteurs
    -id
    -nom
    -prenom

    +Priorites
    -id
    -type

    +Taches
    -id
    -commentaire
    -priorite_id
    -auteur_id

    +Auteurs_Taches
    -auteur_id
    -tache_id

    +Priorites_Taches
    -tache_id
    -priorite_id


    Comment faire en EJB3 pour supprimer ces tables (Auteurs_Taches et Priorites_Taches ) de référence ?

    j'utilise un joinColumns pour mes relation ManyToOne et ce joinColumns enregistre la clef référencée dans une nouvelle table

    y'a t il un moyen de remplacer ce joinColums ?

    merci
    Dernière modification par Invité(e) ; 22/07/2008 à 15h40.

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Je viens de trouver

    il faut utiliser un mappedBy

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @OneToMany (cascade = {CascadeType.ALL},mappedBy="auteur")
     private Collection<Taches> tache;
    le mappedBy prend pour valeur celle donnée dans l'Entity ciblée

    dans mon cas mappedBy vaut auteur
    car dans Taches je lui affecte cette valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        @ManyToOne(cascade=CascadeType.REFRESH , targetEntity=Auteurs.class)
        private Auteurs auteur;

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    je me pose à nouveau une question:

    le joinColum me gênait car il générait une nouvelle table en base avec le couple clef primaire clef étrangère des tables référencée référençante

    maintenant avec le mappedBy je n'ai certes plus de tables supplémentaire, la clef étrangère apparait bien dans la table de référence MAIS la contrainte ne s'applique plus !

    je peux créer une tache ayant une priorité inexistante alors que le but recherché est que cela ne soit possible !

    comment faire pour définir une clef étrangère avec le mappedBy de façon à ce qu'elle soit nullable=false ?

    merci

    (j'espère avoir été clair)

Discussions similaires

  1. Suppression d'une ligne avec contraintes de clef étrangère
    Par freeway57 dans le forum Requêtes
    Réponses: 3
    Dernier message: 23/05/2014, 11h34
  2. contrainte de clef étrangère valeur NULL
    Par danytro dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/11/2012, 23h37
  3. Suppression et contrainte de clef étrangère
    Par PerfectSlayer dans le forum Hibernate
    Réponses: 0
    Dernier message: 21/01/2011, 14h13
  4. Contraintes de clés étrangères non respectées
    Par parfait dans le forum Requêtes
    Réponses: 7
    Dernier message: 28/07/2004, 12h48
  5. [SQL SERVER 2000] Problème clef étrangére
    Par Tankian dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 11/05/2004, 10h44

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