Bonjour,

pour mon application, j'ai bati une requête en SQL pur à la main, puisque je voulais la tester avant de mettre ca sous Hibernate et je suis plus à l'aise de travailler avec du SQL qu'avec Hibernate. Le point est, ma requête fonctionne à merveille mon serveur SQL, mais elle plante allégrement sous Hibernate...donnant ceci dans le stack trace:

[java] Exception in thread "main" net.sf.hibernate.QueryException: outer or full join must be followed by path expression [SELECT count(*) FROM com.mx.releasemgr.domain.Task tk JOIN com.mx.releasemgr.domain.ProjectChange pc ON tk.projectChangeId=pc.projectChangeId WHERE pc.number='relmgr']
[java] at net.sf.hibernate.hql.FromParser.token(FromParser.java:166)
[java] at net.sf.hibernate.hql.ClauseParser.token(ClauseParser.java:87)
[java] at net.sf.hibernate.hql.PreprocessingParser.token(PreprocessingParser.java:123)
[java] at net.sf.hibernate.hql.ParserHelper.parse(ParserHelper.java:29)
[java] at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:149)
[java] at net.sf.hibernate.hql.QueryTranslator.compile(QueryTranslator.java:138)
[java] at net.sf.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:293)
[java] at net.sf.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:1530)
[java] at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1501)
[java] at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1491)
[java] at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1483)
[java] at com.mx.releasemgr.bootstrap.UpdateDataSynchronization.main(UpdateDataSynchronization.java:307)
[java] Java Result: 1


Ma requete sous SQL:
SELECT count(*) FROM task tk JOIN project_change pc ON tk.project_change_id=pc.project_change_id WHERE pc.number='relmgr'
Ma requete sous Hibernate:
String query = "SELECT count(*) FROM com.mx.releasemgr.domain.Task tk JOIN com.mx.releasemgr.domain.ProjectChange pc ON tk.projectChangeId=pc.projectChangeId WHERE pc.number='relmgr'";

System.out.println(query);
int count = ((Integer) session.find(query).get(0)).intValue();
La requête est identique la, juste la synthaxe qui change... je dois faire une faute dans la synthaxe...surement autour du "JOIN" je crois...

Merci de m'aider

Si le besoin est, je peux mettre la définition de mes tables, mais je ne crois pas que ce soit nécéssaire...

++