此查询有什么问题?

" where mh.parent_id = ? "+ (roleIds != null ? " or mh.role_id in (" + roleIds + ")" : "") +


错误信息:


  PreparedStatementCallback;错误的SQL语法[选择u.id,u.user_id,count(distinct pf.id),IfNULL(upm.grievance_autoassign_enable,true)来自用户u内部联接user_roles ur on ur.user_id = u.id左外部联接user_preference_management upm u.id = upm.id内部连接management_hierarchy mh.child_id = uhid或mh.role_id = ur.role_id左侧外部连接(pf.pid = jt.execution_id_和pf.grievance_mgmt_id上的jbpm4_task jt内部连接process_flow pf不为null)在jt.assignee_ = u.user_id上,其中mh.parent_id =吗?或((role_id = 2},{role_id = 4},{role_id = 1},{role_id = 8},{role_id = 38},{role_id = 22},{role_id = 69})中的mh.role_id u.id,u.user_id按count(pf.id)排序];嵌套的异常是com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误。查看与您的MySQL服务器版本相对应的手册,以在'= 2},{role_id = 4},{role_id = 1},{role_id = 8},{role_id = 38},{role_id = 22”附近使用正确的语法},{role_id = 69})'在第1行

最佳答案

问题是您的字符串roleIds,它似乎采用JSON表示法。 SQL where..in语句的正确语法将以逗号分隔。

使您的查询看起来像这样:

 . . . where mh.parent_id = ? or mh.role_id in (2,4,1,8,38,22,69) group by . . .

09-05 08:51