2013-06-28 46 views
0

我正在使用以下hibernate查詢並出現錯誤。你能幫我解決這個錯誤嗎?產品與高音單元有一對多的關係,因此p.tweets的類型是「List」。使用'is null'休眠查詢語言錯誤

查詢==>

@NamedQuery(
    name="getAllProductsWithNoTweets", 
    query="From Product p where p.tweets is null" 
) 

誤差==>

Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'is'. 

回答

1

查詢是沒有意義的。 OneToMany永遠不會爲空。它可能是空的,但不是空的。

如果你想獲得的所有產品無任何鳴叫,查詢應該是這樣的

select p from Product p where p.tweets is empty 
0

由於p.tweets是一家集,你可能想嘗試is empty

另一個想法是,你可能必須做一個left join,因爲如果沒有推文,並且你加入了推特表,那麼你根本就不會將該產品返回到結果中。

select p 
from Product p 
    left join p.tweets t 
having count(t) = 0