我正在编写一个基于类别 集合进行查询的 JPQL 查询。我的类别可以为空,因此我正在使用 :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);
当类别为 NULL 时,上面的代码工作正常。但是,当类别超过一个值时,我得到错误
java.sql.SQLException: Operand should contain 1 column(s)
与hibernate相关的trace是
category6_.category_id in ( ? , ? ) or ( ? , ? ) is null )
如何检查 JPQL 中集合的空值?我认为解决这个问题应该可以解决这个错误。任何帮助表示赞赏
谢谢。
最佳答案
我是这样得到它的:
coalesce(:myIdCollection, null) is null or id in (:myIdCollection)
关于java - 检查 JPQL 查询中集合的 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45164322/