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

Hibernate Java Discussion :

Recuperer la cle etrangere


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut Recuperer la cle etrangere
    Bonjour à tous

    En fait je veux poser une question en java mais je ne trouve pas la section pour creer une nouvelle discution, alors je me suis permis de la poster ici.
    Merci de la rediriger ou toute reponse serai la bienvenue

    je developpe une application desk en java en utilisant mysql pour la BDD et hibernate pour le mapping

    Ma probleme est de pouvoir recuperer et modifier la valeur d'une clé etrangere dans mon code java. Cette cle etrangere figure dans le fichier de mapping mais ne figure pas dans la classe associée à la table. sachant que la connection est faite et les sessions ouvertes

    voir ma table contenant un cle etrangere de sa cle primaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create table Category
    (
       idcategory           varchar(20) not null,
       catparent       		varchar(20),
       name                 varchar(20),
       primary key (idcategory),
       foreign key (catparent) references Category (idcategory) on delete CASCADE on update CASCADE
    )  ENGINE = InnoDB;
    mon code java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for (Object obj:data) {
                    Category category=(Category)obj;
                    Vector<Object> onerow=new Vector<Object>();
                    onerow.add(category.getIdcategory());
                    onerow.add(category.getName());
                    onerow.add(category.<ici ma cle etrangere inaccessible>);
                    tabledata.add(onerow);
    }

    comment je peux acceder à ma cle etrangere ??
    Merci de toute aide
    Je m'excuse d'avoir posté ici

  2. #2
    Expert éminent

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Par défaut
    Bonjour,

    En attendant que vous soyez redirigé vers le (les ?) bon(s) forums, je vous conseille de lire quelques exemples de création de table car la clef étrangère n'est pas bien créée. Ici, vous créez une clef étrangère sur un champ de la même table. Ce n'est pas le principe de la clef étrangère. Elle doit faire référence à un champ d'une autre table et ce champ doit être indexé dans cet autre table car vous utilisez innoDB (ce qui est plutôt bien).

    Ensuite, je ne sais pas si vous essayez de créer une sorte de bean pour garder en mémoire le résultat de votre requête DB (d'ailleurs, elle est où cette requête ?) ou bien si vous utilisez un outil d'interaction entre Java et la DB. Si je comprends bien, vous voulez définir un objet qui d'après son nom, serait un pâle SELECT * FROM la table du même nom ?

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    il est normal de s'auto référencer dans une relation parent enfant.

    Pour récupérer la "clé étrangère" en hibernante, on récupère l'objet en question et on prend son Id:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    category.getParentCategory().getCategoryId()

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut
    merci de ta reponse mais j'ai pas la methode getParentCategory() mais plustot
    category.getCategory().getIdcategory() et la methode category.getCategories()

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu n'a qu'a utiliser la propriété sur laquelle est mappée ta foreign key dans la relation one-to-many pour trouver la valeur en question, le parentCategory n'était qu'un exemple

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 18
    Par défaut
    ok merci ça marche si la valeur de la clé etrangere n'est pas null ;
    dans le cas contaraire il refuse de s'executer

    J'ai essayé d'exclure dans le cas ou la valeur est null comme ci dessous mais il refuse de s'executer

    if (!category.getCategory().getIdcategory().isEmpty()) {
    onerow.add(category.getCategory().getIdcategory());
    }


    Merci encore si t'as eu une idée comment puis je exclure le cas null ??

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

Discussions similaires

  1. [Oracle8] clé étrangère
    Par naazih dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/05/2006, 14h35
  2. Cle etrangere
    Par berg dans le forum Langage SQL
    Réponses: 4
    Dernier message: 17/01/2005, 00h48
  3. clées etrangeres
    Par kkhaled dans le forum Bases de données
    Réponses: 5
    Dernier message: 06/07/2004, 19h45
  4. Plusieurs clés Etrangères ?
    Par maahta dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 06/10/2003, 20h22
  5. supprimer une ligne avec cle etrangere
    Par BaBas dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/07/2003, 11h24

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