【发布时间】:2017-12-23 04:14:10
【问题描述】:
我正在编写一个 JPQL 查询,该查询基于 Categories 集合进行查询。我的类别可以为空,因此我使用 :categories=NULL 进行检查。
@Query("Select v from Vendor v join v.org vorg join v.categories cats WHERE vorg.email =:email AND (cats in :categories or :categories = NULL)")
Set<Vendor> filterVendors(@Param("emailId") String emailId, @Param("categories") Set<Category> categories);
当 category 为 NULL 时,上述方法可以正常工作。但是,当类别超过一个值时,我会收到错误
java.sql.SQLException:操作数应包含 1 列
而hibernate相关的trace是
category6_.category_id in ( ? , ? ) 要么 ( ? , ? ) 一片空白 )
如何在 JPQL 中检查集合是否为空?我认为解决这个问题应该可以解决这个错误。任何帮助表示赞赏
谢谢。
【问题讨论】:
-
1-什么是 vorg.email vorg 不是别名。 2- :email 和 @param 定义名称为“emailId”
-
有一个小错字。现在更正了,希望现在很清楚。谢谢。
标签: java mysql hibernate jpa jpql