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 :

ne pas sélectionner la classe fille


Sujet :

Hibernate Java

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 108
    Points : 98
    Points
    98
    Par défaut ne pas sélectionner la classe fille
    J'ai une classe B héritée de class A, toutes deux ont leur propre mapping Hibernate. Lorsque je fais une requête (select) sur la classe A, Hibernate fait aussi la requête sur la classe B.

    Y - a t-il un moyen d'éviter proprement la requête sur la classe fille? Surtout dans le cas où je n'ai pas de controle sur les classes héritées de la classe A.

    Merci d'avance.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    C'est assez logique, puisque B hérite de A, B est un A, donc si tu demandes tous les A, tu auras les A et les B.

    Selon ton mapping tu peux utiliser la propriété discriminator.
    http://www.hibernate.org/hib_docs/v3...-discriminator

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 108
    Points : 98
    Points
    98
    Par défaut
    fr1man,

    Il n'y a pas de moyen d'éviter ça? Car lorsque je fais session.createQuery("from A...").uniqueResult(). Ca plante, car plusieurs objets sont récupérés alors qu'ils pointent sur la même ligne dans la base.

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Essaie avec la propriété .class dans une requête hql, du genre:
    from A a where a.class = "A";
    Je crois qu'il y a un exemple dans la documentation.

    A priori, sans les guillemets d'après la doc :
    from A a where a.class = A;

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2002
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 108
    Points : 98
    Points
    98
    Par défaut
    Ca ne marche pas

    D'après la doc, la clause t.class = A est remplacée par le critère discriminant. Alors que dans ce cas je veux filtrer sur la classe mère. Du coup, j'ai une erreur : la classe A n'a pas de propriété class.

Discussions similaires

  1. Réponses: 0
    Dernier message: 02/12/2009, 08h27
  2. Réponses: 3
    Dernier message: 12/03/2009, 15h11
  3. Ma classe fille n'hérite pas de sa classe mère
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 15/06/2005, 12h49
  4. probleme de virtual dans la classe fille
    Par xtaze dans le forum C++
    Réponses: 23
    Dernier message: 26/04/2005, 21h39
  5. Réponses: 3
    Dernier message: 16/04/2004, 16h51

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