hql查询中的java空集合参数
我使用的是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 ())
如何在不向集合中添加假值的情况下修复此问题
# 1 楼答案
空参数集会导致无效的sql语句和运行时错误
在执行查询之前,需要检查参数集的大小。 如果它是空的,你可以
如果您知道不可能有非空的结果,请不要执行简单查询
动态构建HQL字符串,如果集合为空,则将in条件替换为“(1=0)”
向参数集添加一个无法匹配的值。显然,这是一个笨拙的解决方案