Java hql查询中的集合参数为空

Java hql查询中的集合参数为空,java,hql,spring-data,Java,Hql,Spring Data,我使用的是spring数据。 在我的查询中,我将一个集合作为参数传递,并使用In子句: (pc.currentClubId in (?1)) 其中?1是集合的占位符。 当我传递一个空集时,我得到以下错误: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL

我使用的是spring数据。 在我的查询中,我将一个集合作为参数传递,并使用In子句:

(pc.currentClubId in (?1))
其中?1是集合的占位符。 当我传递一个空集时,我得到以下错误:

 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')) and (pc.currentClubId in ())

如何在不向集合中添加假值的情况下修复此问题?

空参数集合会导致无效的sql语句和运行时错误。
在执行查询之前,需要检查参数集的大小。 如果它是空的,你可以

  • 如果知道不可能有非空结果,则不执行简单查询

  • 动态构建HQL字符串,如果集合为空,则将in条件替换为“(1=0)”

  • 向参数集添加一个无法匹配的值。显然,这是一个笨拙的解决方案