0

JPA (Hibernate)在我的项目中使用,JOIN如果不明确设置Entities.

我记得在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'

请不要过多关注实体和列名称,因为它们不是实际名称:)

谢谢你的时间。

4

1 回答 1

3

如果模型中没有关联,则无法使用普通连接。如果确实存在关联,则将其也添加到模型中是有意义的。

如果这不是一个选项,您可以在 HQL 中进行交叉连接(这会影响选择列表中的值):

FROM A as a, B as b WHERE b.col1=a.col1

可以从这里找到其他方法。

于 2012-07-27T11:14:26.273 回答