我正在使用以下Hibernate查询并获取错误。产品与tweeter有一对多关系,所以p.tweets的类型是“List”。
查询:
@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'.
答案 0 :(得分:1)
查询毫无意义。 OneToMany永远不会为空。它可能是空的,但不是空的。
如果您想要在没有任何推文的情况下获取所有产品,则查询应该类似于
select p from Product p where p.tweets is empty
答案 1 :(得分:1)
由于p.tweets是一个集合,您可能需要尝试is empty
另一个想法是你可能需要做一个left join
,因为如果没有推文并且你正在加入推文表,那么你只是不能在结果中获得该产品。
select p
from Product p
left join p.tweets t
having count(t) = 0