À l'aide de la Gauche Jointures dans les requêtes HQL sur 3 Tables

J'ai trois tableaux A, B et C. Maintenant, je veux exécuter la requête sql dans les requêtes HQL:

select * from A as a 
left join 
B as b 
on 
a.id = b.id 
left join 
C as c 
on 
b.type=c.type;

Besoin d'aide dans l'écriture de l'équivalent HQL. J'ai essayé avec ce HQL...

Query q = session.createQuery(
    "FROM A as a 
     LEFT JOIN 
     B as b 
     on 
     a.id=b.id 
     LEFT JOIN 
     C as c 
     on 
     b.type=c.type");

Cette requête est en train de lancer une exception .....

org.mise en veille prolongée.hql.ast.QuerySyntaxError: unexpected token: GAUCHE, près de
ligne 1, colonne 23 [DE com.admin.Un comme un LEFT JOIN B b, où
un.Id=b.Id LEFT JOIN C que c où b.type=c.type] à
org.mise en veille prolongée.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:74)
au
org.mise en veille prolongée.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:214)
au
org.mise en veille prolongée.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)
au
org.mise en veille prolongée.hql.ast.QueryTranslatorImpl.compiler(QueryTranslatorImpl.java:83)
au
org.mise en veille prolongée.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:414)

J'ai aussi essayé avec "avec" et "sur" les clauses, au lieu d'où...je reçois le même jeton inattendu sur "on" ou "avec"

exception disponible si SUR .....

org.mise en veille prolongée.hql.ast.QuerySyntaxError: unexpected token: SUR près de la ligne
1, colonne 41 [DE com.admin.Un comme un LEFT JOIN B comme b sur une.Id=b.Id de GAUCHE
REJOINDRE C que c onb.type=c.type] à
org.mise en veille prolongée.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:74)
au
org.mise en veille prolongée.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:214)
au
org.mise en veille prolongée.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)
au
org.mise en veille prolongée.hql.ast.QueryTranslatorImpl.compiler(QueryTranslatorImpl.java:83)
au
org.mise en veille prolongée.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:414)

J'ai aussi essayé avec "avec" clauses, au lieu d'où...je reçois le même jeton inattendu ou "avec"

exception disponible si .....

org.mise en veille prolongée.hql.ast.QuerySyntaxError: unexpected token: SUR près de la ligne
1, colonne 41 [DE com.admin.Un comme un LEFT JOIN B comme b sur une.Id=b.Id de GAUCHE
REJOINDRE C que c onb.type=c.type] à
org.mise en veille prolongée.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:74)
au
org.mise en veille prolongée.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:214)
au
org.mise en veille prolongée.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)
au
org.mise en veille prolongée.hql.ast.QueryTranslatorImpl.compiler(QueryTranslatorImpl.java:83)
au
org.mise en veille prolongée.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:414)

S'il vous plaît aider.

OriginalL'auteur Asuthosh Sharma | 2012-09-18