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

Tuto - Les nativeQuery en Hibernate 4, ou comment lancer une requête écrite « en dur »
Robin CHAUVINMis à jour le 26 Déc 2013

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 APIUne API est un programme permettant à deux applications distinctes de communiquer entre elles et d’échanger des données. ne permet pas de réaliser toutes les requêtes que lon désire. En effet, il est malheureusement impossible de créer une requête composée dun « MINUS », ou dun « INTERSECT ». Il est aussi impossible dutiliser. 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 », cest à 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, dautres nen ont pas.

Notre objectif est de savoir combien dadhérents ont un code ayant au moins une lettre. Lutilisation dune REGEX est alors préconisée.

nativeQuery

{{< highlight java >}} 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; {{< /highlight >}}

 

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 dagrégat avec Hibernate 4
  • Le multiselect avec Hibernate 4