Dans cet article


Offres d'emploi

Tags

Les nativeQuery en Hibernate 4, ou comment lancer une requête écrite « en dur »

Les nativeQuery en Hibernate 4, ou comment lancer une requête écrite « en dur »

Hibernate permet de répondre à la plupart des besoins pour créer des requêtes de tout type : du simple « SELECT FROM » aux plus complexes des requêtes imbriquées.

Pourtant, cette API ne permet pas de réaliser toutes les requêtes que l’on désire. En effet, il est malheureusement impossible de créer une requête composée d’un « MINUS », ou d’un « INTERSECT ». Il est aussi impossible d’utiliser. par exemple, des REGEX dans nos requêtes. Pourtant, il faut bien pouvoir les créer, ces requêtes.

Hibernate propose pour se faire une fonction permettant de lancer une requête écrite « en dur », c’est à dire en texte directement : la createNativeQuery.

1. Les prérequis

« ).

 

2. Fonctionnement de la nativeQuery

« . Dans cette table, on enregistre, entre autre, des codes adhérent. Certains ont une ou plusieurs lettres, d’autres n’en ont pas.

Notre objectif est de savoir combien d’adhérents ont un code ayant au moins une lettre. L’utilisation d’une REGEX est alors préconisée.

nativeQuery

EntityManager em = EntityManagerUtil.getEntityManager();
 /*
  * SELECT COUNT(*)
  * FROM adherent
  * WHERE code REGEXP '[a-zA-Z]+'
  */

// On écrit la requête
String requete = "SELECT COUNT(*) FROM adherent WHERE code REGEXP '[a-zA-Z]+'";

// On lance la requête et on enregistre le résultat, puis on le retourne
BigInteger lResult = (BigInteger) em.createNativeQuery(requete).getSingleResult();
return lResult != null ? lResult.intValue() : 0;

 

3. Aller plus loin avec Hibernate 4

Dévouvrez de nombreux articles sur Hibernate 4 ;

  • La clause WHERE avec Hibernate 4
  • La clause ORDER BY avec Hibernate 4
  • La clause GROUPE BY avec Hibernate 4
  • Les fonction d’agrégat avec Hibernate 4
  • Le multiselect avec Hibernate 4

 

L'équipe AXOPEN

Voir aussi les articles suivants

La clause WHERE en Hibernate 4

La clause WHERE en Hibernate 4

Le 19/12/2013 par Robin Chauvin

Comment mettre en oeuvre la clause SQL WHERE avec Hibernate 4 ? Le principe Si vous savez faire une requête simple avec Hibernate 4, vous êtes prêt à mettre en oeuvre une clause WHERE. Pour cela, il faut utiliser la classe javax.persistence.Predicate : cette classe représente une condition ou une série de conditions.  Les fonctions permettant d’appeler les opérateurs sont fournies par la boîte à outils qu’est le CriteriaBuilder. Ces fonctions prennent en paramètre des Expression<?
Lire l'article

La clause ORDER BY en Hibernate 4

La clause ORDER BY en Hibernate 4

Le 16/12/2013 par Robin Chauvin

Comment utiliser la clause SQL ORDER BY avec Hibernate 4 ? Le principe Si vous savez faire une requête simple avec Hibernate 4, la mise en place d’ORDER BY est très simple. Elle passe par deux méthodes : la méthode orderBy() de votre CriteriaQuery, à laquelle vous passez en paramètre une méthode de tri ; la méthode asc() ou la méthode desc() de votre CriteriaBuilder, à laquelle vous passez le chemin vers le champ sur lequel vous ordonnez.
Lire l'article

Les clés primaires composées avec Hibernate 4

Les clés primaires composées avec Hibernate 4

Le 28/11/2013 par Robin Chauvin

Dans une base de données relationnelle, la plupart des tables possèdent une clé primaire appliquée sur un seul champ. Cependant, une clé primaire peut s’appliquer à plusieurs d’entre eux : on parle de clé primaire composée. 1. Les prérequis Pour comprendre cet article, il est recommandé de savoir faire un mapping Hibernate. 2. Structure de l’entité L’entité présentera la particularité de posséder, à la place de l’annotation @Id habituelle, une Embedded key, grâce à l’annotation @EmbeddedId
Lire l'article