簡體   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