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 :

[CreateCritera] me génère des doublons


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Par défaut [CreateCritera] me génère des doublons
    Bonjour,

    Encore un problème très simple !
    J'ai en gros 3 tables, et 2 classes : "Subscriber" et "Feed". La 3ème table possède à la fois en clés étrangères l'id du Subscriber et de la Feed, pour faire une table de concordance que j'ai appelé la table des "subscriptions".

    Dans ma base, j'ai 2 Subscribers, 2 Feeds, et chaque Subscriber est inscrit aux 2 Feeds -> donc j'obtiens 4 subscriptions.

    Je veux récupérer tout simplement tous mes "Subscriber". Avec un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.Find("select s.Id from Subscriber s")
    aucun problème. J'en obtiens 2. Par contre en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    session.CreateCriteria(typeof(Subscriber)).List()
    Et là j'en obtiens 4... comment éviter ça ? Est-ce une erreur dans mes mappings ou juste dans mes critères ?

    Merci beaucoup !

  2. #2
    Membre averti
    Inscrit en
    Octobre 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 45
    Par défaut
    je pense qu'en t'orientant vers la méthode setResultTransformer de la classe Criteria tu trouveras ton bonheur.
    Par exemple :
    criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
    ne te retournera que des instances distinctes des enregistrements trouvés en BDD correspondant à ton critère de recherche.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Par défaut
    Merci ça évite les doublons
    Par contre n'y a t-il pas un moyen propres de récupérer tous les Subscribers directement, en évitant les doublons ? Je sais que là, ça le fait, mais en HQL si je fais un SELECT * FROM subscribers, je n'ai que 2 résultats et non 4... je veux comprendre la logique d'Hibernate derrière... merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2003
    Messages : 66
    Par défaut
    En fait je rencontre encore un problème, qui est sûrement lié au précédent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    crit = session.CreateCriteria(typeof(Subscriber))
                                     .Add(NHibernate.Expression.Expression.Eq("Id", "1"));
    Et j'obtiens encore plusieurs résultats ! Pourtant mes Id sont bien des idenfiants, et il n'y en a qu'un seul qui soit à 1...

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/11/2014, 20h15
  2. Pb : jointure génère des doublons
    Par patbeautifulday dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 23/03/2009, 11h43
  3. mysql_query me génère des doublons...
    Par cdryk dans le forum Requêtes
    Réponses: 6
    Dernier message: 11/05/2006, 15h57
  4. Effacer des doublons
    Par ben53 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/07/2004, 17h56
  5. Réponses: 2
    Dernier message: 07/07/2004, 17h44

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