2014-02-14 220 views
0

這個查詢有什麼問題?此sql查詢導致此錯誤的錯誤是什麼?

" 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))內部連接user_roles ur onUser.user_id = u.id left outer join user_preference_management upm on u.id = upm.id內部連接management_hierarchy mh在mh.child_id = u.id或mh.role_id = ur.role_id左外部連接(jbpm4_task jt內部連接process_flow pf在pf.pid = jt.execution_id_和pf.grievance_mgmt_id是非空)在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 order by 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})'at line 1

+0

是什麼類型'roleIds'?從錯誤消息中的SQL中,它看起來可能是某種對象的列表?你需要把它變成一個逗號分隔的數字列表,不需要{{role_id =}'。 – andersschuller

+0

查詢的其餘部分和Java代碼在哪裏? – jbx

+0

感謝您的答覆,德繼承人整個查詢, –

回答

0

問題是您的字符串roleIds,它似乎是JSON表示法。 SQL where..in語句的正確語法將以逗號分隔。

讓你的查詢看起來更像是這樣的:

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