繁体   English   中英

JPQL加入(休眠)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM