0

我正在使用以下 Hibernate 查询并出现错误。产品与高音扬声器具有一对多关系,因此 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'.
4

2 回答 2

1

查询没有意义。OneToMany 永远不会为空。它可能为空,但不为空。

如果您想在没有任何推文的情况下获得所有产品,查询应该类似于

select p from Product p where p.tweets is empty
于 2013-06-28T16:39:31.687 回答
1

由于 p.tweets 是您可能想尝试的集合is empty

另一个想法是,您可能必须这样做,left join因为如果没有推文并且您正在加入推文表,那么您根本不会在结果中获得该产品。

select p
from Product p
    left join p.tweets t
having count(t) = 0
于 2013-06-28T16:41:16.057 回答