有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

    1. 如果您知道不可能有非空的结果,请不要执行简单查询

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

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