Bonjour,

j'ai une requête qui ne marche pas sous hibernate :
L'erreur est la suivante :
Code :

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
48
49
50
exception 
 
javax.servlet.ServletException: unexpected AST node: query [SELECT (count(t_s.id) / (SELECT count(t_s2.id) FROM tables.T_Dem_S t_s2 WHERE t_s2.criticite='Majeure Urgente' AND t_s2.date_clo >= '2006-06-01' AND t_s2.date_clo <= '2006-07-06' AND t_s2.application = t_s.application) * 100) FROM tables.T_Dem_S t_s,tables.T_Intervenant t_i WHERE t_s.criticite='Majeure Urgente' AND (EXTRACT(HOUR from timediff(t_s.date_res, t_s.date_aff)) - (DATEDIFF(t_s.date_res, t_s.date_aff)*14)) <= '8' AND t_s.date_clo >= '2006-06-01' AND t_s.date_clo <= '2006-07-06' AND t_s.id_intervenant = t_i.idIntervenant AND t_i.id_groupe = t_i.id_groupe GROUP BY t_s.application]
	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	sun.reflect.GeneratedMethodAccessor158.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:585)
	org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
	java.security.AccessController.doPrivileged(Native Method)
	javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
	org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
	org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
 
 
root cause 
 
org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: query [SELECT (count(t_s.id) / (SELECT count(t_s2.id) FROM tables.T_Dem_S t_s2 WHERE t_s2.criticite='Majeure Urgente' AND t_s2.date_clo >= '2006-06-01' AND t_s2.date_clo <= '2006-07-06' AND t_s2.application = t_s.application) * 100) FROM tables.T_Dem_S t_s,tables.T_Intervenant t_i WHERE t_s.criticite='Majeure Urgente' AND (EXTRACT(HOUR from timediff(t_s.date_res, t_s.date_aff)) - (DATEDIFF(t_s.date_res, t_s.date_aff)*14)) <= '8' AND t_s.date_clo >= '2006-06-01' AND t_s.date_clo <= '2006-07-06' AND t_s.id_intervenant = t_i.idIntervenant AND t_i.id_groupe = t_i.id_groupe GROUP BY t_s.application]
	org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
	org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:225)
	org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158)
	org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109)
	org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75)
	org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54)
	org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71)
	org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
	org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
	org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583)
	utils.GenerateReportsHG.getIndicateur71E2(Unknown Source)
	utils.GenerateReportsHG.generateRapportsHTML(Unknown Source)
	utils.GenerateReportsHG.execute(Unknown Source)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
	sun.reflect.GeneratedMethodAccessor158.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:585)
	org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
	java.security.AccessController.doPrivileged(Native Method)
	javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
	org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
	org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
Ma question est : à quoi l'erreur peut être due, sachant que son équivalente (en SQL) marche très bien sous une console SQL.
(Peut-on imbriquer des requêtes dans Hibernate ? )

PS : J'ai fait le test en enlevant la sous-requête, je n'ai plus d'erreurs...