3つのテーブルABとCがあります。次に、HQLでこのSQLクエリを実行します。
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;
同等のHQLを書くのに助けが必要です。この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");
このクエリは例外をスローしています....。
org.hibernate.hql.ast.QuerySyntaxError:予期しないトークン:LEFT 1行目、23列目[FROM com.admin.A as a LEFT JOIN B as b where a.Id = b.Id LEFT JOIN C as cwhereb。 type = c.type] at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:74)at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:214)at org.hibernate.hql .ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:414)
また、whereの代わりに「with」句と「on」句を試してみました...「on」または「with」で同じ予期しないトークンを取得します
例外qithON....。
org.hibernate.hql.ast.QuerySyntaxError:予期しないトークン:行1、列41の近くでオン[FROM com.admin.A as a LEFT JOIN B as b on a.Id = b.Id LEFT JOIN C as c onb.type = c.type] at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:74)at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:214)atorg.hibernate.hql。 ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:414)
また、whereの代わりに"with"句を試してみました...同じ予期しないトークンをonまたは"with"で取得します
例外qithWITH....。
org.hibernate.hql.ast.QuerySyntaxError:予期しないトークン:行1、列41の近くでオン[FROM com.admin.A as a LEFT JOIN B as b on a.Id = b.Id LEFT JOIN C as c onb.type = c.type] at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:74)at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:214)atorg.hibernate.hql。 ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127)at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83)at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:414)
助けてください。