[英]JPQL Join (Hibernate)
我在项目中使用JPA (Hibernate)
,并且在未显式设置Entities
之间的关系的情况下无法编写JOIN
查询。
我记得在TOPLINK
做过同样的事情。
查询:
范例1:
SELECT a FROM
EntityA a
INNER JOIN EntityB b on b.col1=a.col1
INNER JOIN EntityC c on c.col1=b.col1
LEFT JOIN EntityC c on c.col1=a.col1
错误:
Unexpected token "on"
范例2:
SELECT a FROM
EntityA a
INNER JOIN EntityB b
INNER JOIN EntityC c
LEFT JOIN EntityC c
WHERE b.col1=a.col1 AND c.col1=b.col1 AND c.col1=a.col1
错误:
ERROR o.hibernate.impl.SessionFactoryImpl - Error in named query:
org.hibernate.hql.ast.QuerySyntaxException: Path expected for join!
[SELECT **MY QUERY HERE**]
at org.hibernate.hql.ast.QuerySyntaxException.convert
(QuerySyntaxException.java:54)
~[hibernate3.jar:na]
ERROR org.hibernate.hql.PARSER - Path expected for join!
ERROR org.hibernate.hql.PARSER - Invalid path: 'b.col1'
ERROR org.hibernate.hql.PARSER - Invalid path: 'c.col1'
请不要太在意实体和列的名称,因为它们不是课程的实际名称:)
谢谢你的时间。
如果模型中没有关联,则无法使用普通联接。 如果确实存在关联,则也可以将其添加到模型中。
如果不是这样,则可以在HQL中进行交叉联接(这会影响选择列表中的值):
FROM A as a, B as b WHERE b.col1=a.col1
其他方法可以从这里找到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.