我正在使用弹簧数据。 在我的查询中,我将一个set作为参数传递并使用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 ())
如何在不添加假值的情况下修复此问题?
答案 0 :(得分:1)
空参数集导致无效的sql语句和运行时错误 在执行查询之前,需要检查参数集的大小。 如果它是空的,你可以
如果您知道不能成为非空结果,则不要执行查询。
动态构建HQL字符串并用"(1 = 0)"替换条件。如果该集合为空。
为无法匹配的参数集添加值。显然这是一个笨拙的解决方案。