2015-05-19 73 views
0

我有以下類別:HQL連接查詢的幫助請求

public class A{ 
     private Set<B> bSet; 
    } 

    public class B{ 
    private Set<C> cSet; 
    private boolean isAvailable; 
    } 
    public class C{} 

的HQL是:

select a from A a 
     left join fetch a.bSet 
     left join fetch b.cSet 
     where a.id = ? and bSet.isAvailable = ? 

的問題是我不能使用set where子句。我如何處理這個查詢?

+0

請爲連接的表添加別名並使用別名來訪問它們 – Vicky21

+0

我試過使用alais但得到錯誤org.hibernate.QueryException:無法解析屬性:b – user2001165

回答

0

嘗試這種方式我只給別名您的查詢部分

select a from A a 
     left join fetch a.bSet b 
     left join fetch b.cSet c 
     where a.id = ? and b.isAvailable = ? 

如果你嘗試toreplace不行?與:id和:isAvilable分別作爲folows

select a from A a 
     left join fetch a.bSet b 
     left join fetch b.cSet c 
     where a.id = :id and b.isAvailable = :isAvailable 

最有可能其中一個必須爲你工作。

+0

我嘗試使用上述方法但出現錯誤:org .hibernate.QueryException:無法解析屬性:b。任何方式來處理? – user2001165

+0

不知道這是否會幫助你一旦我做了一些技巧來解決這個問題我記得我使用b.isAvilable(:isAvilable)可能會對你有用 –