Bonjour messieurs,
Je suis actuellement a la recherche d’une requête hibernate sur mes DTO car j’ai une requête SQL qui s’exécute super bien quand je pace par un client SQL classique cette requête SQL est :
Ma requête SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
SELECT v.VALUE FROM  t_value v 
INNER JOIN (SELECT r.id_key, 
MAX(r.id_goroco) AS id_goroco,
MAX(r.id_value) AS id_value
FROM t_rel_kvlg r INNER JOIN t_key k ON k.id_key = r.id_key
WHERE r.id_goroco <=21 
AND r.id_locale = 3
AND (k.end_version = 0 OR k.end_version >=21 ) 
AND k.start_version <= 21 
AND k.id_project = 1 
GROUP BY r.id_key, r.id_locale, k.start_version, k.end_version ) t ON v.id_value = t.id_value
WHERE v.VALUE = 'to be translated' OR v.VALUE = 'Ã* traduire' OR v.VALUE = 'A traduire'
Mon problème est quand je passe par hibernate je remplace dans la requête par mes DTO et ca ne marche pas pourtant j’ai regardé sur internet et pas de problème pour les inner join normalement je ne comprends pas vraiment à vrai dire. Si quelqu’un a des explications je suis preneur.
Ma requête Hibernate :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT VALUE AS VALUE 
FROM  Value value inner join (SELECT kvlg.idKey, MAX(kvlg.idGoroco), MAX(kvlg.idValue) 
FROM Kvlg kvlg inner join Key key ON key.idKey = kvlg.idKey 
WHERE kvlg.idGoroco <= 21 
AND kvlg.idLocale = 2 
AND (key.endVersion = 0 OR key.endVersion >= 21 )
AND key.startVersion <= 21 
AND key.idProject = 1
GROUP BY kvlg.idKey, kvlg.idLocale, key.startVersion, key.endVersion ) t ON value.idValue = t.idValue 
WHERE value.VALUE = 'to be translated' OR value.VALUE = 'Ã* traduire' OR value.VALUE = 'A traduire'
Sur le net pour les sous-reqête :
- Note that HQL subqueries can occur only in the select or where clauses. source http://docs.jboss.org/hibernate/core.../queryhql.html

J'ai l'impression que ma sous requête dans le inner join … il n’aime pas trop hibernate. Soit c’est sa soit je suis vraiment un manche … Si quelqu'un a une solution, je suis prenneur.