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 :
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.
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'
Ma requête Hibernate :
Sur le net pour les sous-reqête :
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'
- 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.
Partager