Les FAQs Java :
FAQ JAVA FAQ Java EE FAQ Java ME FAQ Java XML FAQ JavaFX FAQ Java GUI FAQ Struts FAQ JSF FAQ JDBC JDO FAQ Hibernate FAQ Spring FAQ Eclipse FAQ NetBeans FAQ JCreator FAQ Maven 2

La FAQ HibernateConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 63, dernière mise à jour : 5 juin 2009 

 
OuvrirSommaireUtilisationLe language HQL

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 :

 
Sélectionnez
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.

Créé le 2006-10-22  par minosis

Lien : Plus d'infos
Lien : Comment exécuter du code HQL ?
Lien : Les requêtes HQL sont-elles sensibles à la casse ?

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

 
Sélectionnez
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 2009-06-05  par 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 2009-06-05  par Baptiste Wicht

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

 
Sélectionnez
FROM table WHERE field LIKE 'C''est'
Mis à jour le 2009-06-05  par Baptiste Wicht

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(*) :

 
Sélectionnez
((Integer) session.iterate("select count(*) from ....").next() ).intValue();
Créé le 2006-10-28  par Baptiste Wicht

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

 
Sélectionnez
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 2008-02-11  par Baptiste Wicht
  

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 © 2006 - 2009 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. Cette page est déposée.