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 :

Simple requete HQL


Sujet :

Hibernate Java

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 66
    Points
    66
    Par défaut Simple requete HQL
    Bonjour,

    je souhaite executer cette requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            org.hibernate.Session session = mpower_hibernate.HibernateUtil.currentSession();
            org.hibernate.Query query = session.createQuery(
                    "from XacmlDataPolicy data, XacmlDelegationPolicy del"
                    + " WHERE data.dataOwner.UserID = ?"
                    + " AND del.delegator.UserID = ?");
     
            query.setLong(0, owner_id);
            query.setLong(1, owner_id);
     
            return (List<XacmlPolicy>) query.list();
    Le resultat retourné est une liste de tableau d'objets, dont le 1er element contient les XacmlPolicy. Pourquoi une liste de tableau d'objets au lieu de ma liste de XacmlPolicy tout court?

    Pourriez-vous m'indidiquer s'il vous plait ce qui ne vas pas?

    Cordialement,

  2. #2
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Tu fais une requête sur 2 types d'objets. Si tu ne veux récupérer qu'un seul type, il faut le préciser avec un select :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
            org.hibernate.Session session = mpower_hibernate.HibernateUtil.currentSession();
            org.hibernate.Query query = session.createQuery(
                    "select data from XacmlDataPolicy data, XacmlDelegationPolicy del"
                    + " WHERE data.dataOwner.UserID = ?"
                    + " AND del.delegator.UserID = ?");
     
            query.setLong(0, owner_id);
            query.setLong(1, owner_id);
     
            return (List<XacmlPolicy>) query.list();

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 66
    Points
    66
    Par défaut
    En effet, deux types d'objets mais héritant de la même classe, si je fais ce que tu me dis, je vais récupérer seulement du data et non pas data + del.

  4. #4
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Euh là je ne saisis pas ce que tu veux faire.

    Tu interroges 2 tables, avec une jointure sur les deux ; et apparemment tu voudrais récupérer une seule liste, qui soit une union des deux tables ?
    Si c'est bien ça, note que ton array contient justement les 2 listes, libre à toi de les concaténer. Sinon, je t'invite à détailler ce que tu veux faire.

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2010
    Messages
    205
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 205
    Points : 66
    Points
    66
    Par défaut
    C'est simple, j'ai deux objets héritant d'un même objet. Je souhaite récupérer une collection d'objet du type de la classe de base, qui répondent aux critères ci-dessus. Qu' il y est 2 ou 63 tables, ca ne change rien d'un point de vue objet.

  6. #6
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Dans ce cas il faut déclarer la classe mère, et faire une requête sur elle.

    http://docs.jboss.org/hibernate/core...l-polymorphism

    et pour les façon de gérer l'héritage :
    http://docs.jboss.org/hibernate/core...heritance.html

    EDIT : Dire que ça devrait être pareil quel que soit le nombre de classes, c'est un peu particulier : tu ne fais pas une requête purement polymorphique, puisque tu vas interroger des champs précis des sous-classes. Faire 2 requêtes séparées, ou bien joindre les listes (selon ce que tu veux faire) est probablement le plus simple !

Discussions similaires

  1. requete HQL simple
    Par cotede2 dans le forum Hibernate
    Réponses: 2
    Dernier message: 14/10/2008, 18h05
  2. [Hibernate] problème requete HQL !
    Par fadjerx dans le forum Hibernate
    Réponses: 6
    Dernier message: 11/08/2007, 12h45
  3. [C#] simple requete INSERT en VS 2003 - SQLServer 2000
    Par cortex024 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/01/2006, 18h57
  4. [java/jdbc]SIMPLE REQUETE SQL: expression abssente
    Par b_52globemaster dans le forum JDBC
    Réponses: 6
    Dernier message: 16/08/2005, 11h38
  5. Simple requete
    Par NeHuS dans le forum Langage SQL
    Réponses: 4
    Dernier message: 15/02/2005, 09h43

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