Bonjour,

J'ai réussi à pondre une requête qui fait exactement ce que je veux mais c'est en SQL natif et vu la tête de la requête je me demande si elle était transposable en HQL ou Criteria.
La requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
WITH prerequete
				    AS  (SELECT  *
				            FROM TABLE1  table1
				            WHERE mp.commentaire not like '%Un texte'
				            AND table1.type = 0
				            AND   NOT EXISTS
				                    (SELECT  NULL
				                        FROM    TABLE2 table2
				                        WHERE   table1.id  = table2.id))
				SELECT max(id) AS id
				       , identite
				       , datesaisie
				       , min(datedebut) AS datedebut
				       , DATE_SAISIE_FIN
				       , max(datefin) AS datefin
				       , AI
				       , max(puissance) keep(dense_rank first ORDER BY datefin DESC) AS puissance
				       , typesaisie
				       , idcause
				       , traitement
				       , commentaire       
				    FROM prerequete p
				    where p.typesaisie in (1,3,4)
				GROUP BY identite
				       , datesaisie
				       , typesaisie
				       , DATE_SAISIE_FIN
				       , AI
				       , idcause
				       , traitement
				       , commentaire
				UNION
				SELECT id AS id
				       , identite
				       , datesaisie
				       , datedebut AS datedebut
				       , DATE_SAISIE_FIN
				       , datefin AS datefin
				       , AI
				       , puissance AS puissance
				       , typesaisie
				       , idcause
				       , traitement
				       , commentaire       
				    FROM prerequete p
				    where p.typesaisie not in (1,3,4)or p.typesaisie is null
				ORDER BY dateSaisie DESC, dateDebut DESC
En gros ça me ramène une liste d'objet que je peux convertir par la suite mais je préférerais récupérer une liste d'objet de type TABLE1 qui contient un objet référencé par "identite". Pour le moment j'ai juste un nombre "identite" et je suis obligé de refaire une requête à chaque fois pour récupérer l'entité correspondante donc je fais plusieurs accès à la base et ma requête efficace d'origine perd tout son intérêt.

Est-ce possible à traduire pour hibernate à votre avis ?

Merci