我有三个表 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:意外令牌:第 1 行附近的 LEFT,第 23 列 [从 com.admin.A 作为 LEFT JOIN B 作为 b where a.Id=b.Id LEFT JOIN C as c where b. type=c.type] 在 org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:74) 在 org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:214) 在 org.hibernate.hql .ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127) 在 org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83) 在 org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:414)
我还尝试使用“with”和“on”子句而不是 where...我在“on”或“with”上得到了相同的意外标记
异常 qith ON .....
org.hibernate.hql.ast.QuerySyntaxError:意外令牌:在第 1 行,第 41 列附近打开 [FROM com.admin.A 作为 LEFT JOIN B 作为 b on a.Id=b.Id LEFT JOIN C 作为 c onb.type =c.type] 在 org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:214) 在 org.hibernate.hql 的 org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:74)。 ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127) 在 org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83) 在 org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:414)
我还尝试使用“with”子句而不是 where...我在“with”或“with”上得到了相同的意外标记
例外 qith WITH .....
org.hibernate.hql.ast.QuerySyntaxError:意外令牌:在第 1 行,第 41 列附近打开 [FROM com.admin.A 作为 LEFT JOIN B 作为 b on a.Id=b.Id LEFT JOIN C 作为 c onb.type =c.type] 在 org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:214) 在 org.hibernate.hql 的 org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:74)。 ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:127) 在 org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:83) 在 org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:414)
请帮忙。