IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ HibernateConsultez toutes les FAQ

Nombre d'auteurs : 5, nombre de questions : 63, dernière mise à jour : 17 mars 2014  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

SommaireUtilisationLe langage HQL (6)
précédent sommaire suivant
 

Hibernate Query Langage est un langage d'interrogation des classes persistantes avec une syntaxe proche du SQL. Cependant les objets manipulés sont les classes et membres du mapping contrairement au SQL qui réalise les requêtes directement sur la base de données. Aussi, le HQL contient des fonctionnalités spécifiques au modèle objet.

Les requêtes HQL peuvent être formées des éléments principaux suivants :

les clauses (from, select, where, order by, ...)
les fonctions d'agrégation (count, sum, avg, max, ...)
les sous-requêtes (il s'agit de requêtes HQL dont le résultat est utilisé dans une requête HQL principale)

Exemple :

Code sql : Sélectionner tout
FROM infos.Contact contact WHERE contact.nom = 'Dupont'

Cette requête sélectionne tous les contacts, dans la classe infos.Contact, ayant comme nom Dupont. Vous remarquerez l'utilisation d'un alias essentiel si on fait référence à la classe dans différents endroits de la requête.

Mis à jour le 22 octobre 2006 Baptiste Wicht

Pour exécuter une requête HQL, il vous faut employer la méthode createQuery() sur votre session :

Code java : Sélectionner tout
Query query = session.createQuery("Requête HQL");

Ensuite, si c'est une requête de sélection, vous pouvez récupérer les résultats avec la méthode list() ou alors exécuter la requête avec la méthode executeUpdate().

Mis à jour le 5 juin 2009 Baptiste Wicht

Non, les requêtes HQL ne sont pas sensibles à la casse, sauf pour tout ce qui concerne le nom des classes Java et des propriétés.

Ainsi FrOm est tout à fait égal à FROM et à from. Mais from Cat n'est pas égal à from cAt.

Mis à jour le 5 juin 2009 Baptiste Wicht

Pour pouvoir insérer des quotes dans une requête, il suffit de doubler tous les ' dans votre requête. Par exemple :

Code sql : Sélectionner tout
FROM table WHERE field LIKE 'C''est'

Mis à jour le 5 juin 2009 Baptiste Wicht

  • Voici la procédure sous Hibernate 2 : Vous pouvez directement employer next() sur le résultat de votre requête HQL pour ne pas avoir à initialiser votre collection et simplement compter le nombre de résultats en employant count(*) :
    Code java : Sélectionner tout
    ((Integer) session.iterate("select count(*) from ....").next() ).intValue();
  • Voici la procédure sous Hibernate 3 :
    Code java : Sélectionner tout
    Integer count = (Integer) session.createQuery("select count(*) from ....").uniqueResult();

Mis à jour le 28 octobre 2006 Baptiste Wicht

Il suffit d'employer la méthode setMaxResults de votre Query :

Code java : Sélectionner tout
1
2
3
Query query = sess.createQuery("Votre requête HQL"); 
query.setMaxResults(10); 
List results = query.list();

10 étant le nombre maximal d'enregistrements retournés par la requête.

Mis à jour le 11 février 2008 Baptiste Wicht

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.