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 :

Criteria ajout d'objets avec une jointure


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut Criteria ajout d'objets avec une jointure
    bonjour,

    je voudrais faire une pseudo jointure avec les criteria, pseudo parceque je veux lier une colonne de la table à une autre colonne d'une table ou une vue..

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class User
    long userId;
    String login;
    String nom;
     
     
    class UserInfo
    long id,
    String login;
    String nom;
    je souhaiterais lors de la recherche recuperer les objets UserInfo pour un login.

    avec User = (1,"monLogin",null)
    UserInfo = (1,"monLogin","Pierre")
    UserInfo = (2,"monLogin","Paul)

    la recherche pour User 1 doit donner (1,"monLogin","Pierre") + (2,"monLogin","Paul")

    merciii

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Par défaut
    Bonjour,

    Je n'ai pas tres bien saisis laquelle de tes clés faisait le lien entre les 2 tables. Quelle est ta foreignKey au juste?

    Pour tout récupérer le plus simple est peut etre de disposer d'un objet UserInfo dans ta classe User :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class User
    long userId;
    String login;
    UserInfo ui;
     
    class UserInfo
    long id,
    String login;
    String nom;
    Dans ta base de données des tables de ce type (la foreignKey est du style user.numUi = userInfo.id) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    table User
    long userId
    String login
    Integer numUi
     
    table UserInfo
    long id
    String login
    String nom
    Ton mapping Hibernate de User avec un many-to-one:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <many-to-one name="ui" column="numUi" not-null="true" />
    Un criteria pour ta requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Criteria crit = taSession.createCriteria(User.class);
    Transaction tx = taSession.beginTransaction() ;
    List users = crit.list() ;
    tx.commit();
    Si tu veux mettre des restrictions sur le login de User par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    crit.add(Restrictions.eq("login", "monLoginExemple")) ;
    Si tu veux mettre des restrictions sur le nom de UserInfo par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    crit.createCriteria("ui").add(Restrictions.eq("nom", "monUserInfoNom"));
    En espérant avoir pu t'aider.
    Autrement, tu as des tas d'exemple de pages de loggin sur le net.

    Bonne journée.

  3. #3
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par Alyx² Voir le message
    Bonjour,

    Je n'ai pas tres bien saisis laquelle de tes clés faisait le lien entre les 2 tables. Quelle est ta foreignKey au juste?
    au fait, il n'y pas de foreugn key, c'est pour ça que je parle de pseudo jointure. peut etre que la solution est de faire un subCriteria, ou d'utiliser les ResultTrandform mais je ne vois pas encore comment le faire,
    pour faire simple..

    ma vue userInfo contient tous les users et leurs login.
    la table User contient que le login, la colonne nom est toujous null (la table est remplie a partir d'un fichier text elle ne contient pas toute les infos)..
    qd je fais ma recherche sur la table de base User, j'ai que le login et je veux dans dupliquer la ligne pour tous les noms avec le meme login..

    je ne sais pas si c'est clair

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Par défaut
    ma vue userInfo contient tous les users et leurs login.
    Si tu as déjà toutes les infos dont tu as besoin dans ta vue UserInfo, pourquoi aller faire une jointure sur la table User?

    Récupère simplement userInfo ?

  5. #5
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par Alyx² Voir le message
    Récupère simplement userInfo ?
    désolè, je nai pas bien expliqué,
    la classe User elle contient d'autre informations communes à tous les userInfo, au fait les informations concernent un login,mais comme l'utilisateur a besoin de voir le nom et le penom et qu'un login peut correspondre à plusieurs noms, je dois dupliquer la ligne pour un login pour chaque nom..

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2006
    Messages : 121
    Par défaut
    Oki donc tu as bien une relation 1 à plusieurs.

    Mais alors c'est un problème de conception. Pour ma part, une bdd avec des relations 1-~ a forcément des foreign key (même implicitement déclarées).
    Sinon, tu ne pourras jamais relier tes données.

    Peut etre que ton mapping hibernate nous aiderait à mieux comprendre ce que tu cherches à faire

    Dsl de ne pas pouvoir t'aider.

Discussions similaires

  1. [MySQL] probléme de repetition avec une jointure
    Par kenzo83220 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/11/2006, 17h24
  2. Réponses: 1
    Dernier message: 23/08/2006, 14h11
  3. ajout de données avec une relation N-à-N
    Par yeah_baby64 dans le forum Access
    Réponses: 3
    Dernier message: 28/07/2006, 18h19
  4. [DB2] Problèmes avec une Jointure externe sur des vues
    Par treivse dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/07/2006, 11h42
  5. nommer un objet avec une variable
    Par fatcat dans le forum C++
    Réponses: 4
    Dernier message: 11/12/2005, 16h16

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