List<Integer> roles = jdbcTemplate.queryForList("select role_id from user_roles where user_id = ?" , new Object[]{id});
String roleIds= "";
for (int i= 0; i < roles.size(); i++)
{
} if (roles.get(i) != null) {
if(i!=0){
roleIds += "," + m.get(i) ;
}else{
roleIds += m.toString() ;
}
}
}
String queryString= "select u.id,u.user_id,count(distinct pf.id),IfNULL(upm.grievance_autoassign_enable,true) "+
" from users u "+
" inner join user_roles ur on ur.user_id=u.id " +
" left outer join user_preference_management upm on u.id = upm.id "+
" inner join management_hierarchy mh on mh.child_id = u.id or mh.role_id =ur.role_id "+
" left outer join (jbpm4_task jt "+
" inner join process_flow pf on pf.pid = jt.execution_id_ and pf.grievance_mgmt_id is not null) on jt.assignee_ = u.user_id "+
" where mh.parent_id = ? "+ (roleIds != null ? " or mh.role_id in (" + roleIds + ")" : "") +
" group by u.id,u.user_id order by count(pf.id) ";
return executeDBSummaryWithAutoAssign(queryString,new Object[] {id});
}
我的錯誤日誌:PreparedStatementCallback在SQL和Java
PreparedStatementCallback; 錯誤的SQL語法[select u.id,u.user_id,count(distinct pf.id),IfNULL(upm.grievance_autoassign_enable,true)from user u inner join user_roles ur on ur.user_id = u.id left left outer join user_preference_management upm on u.id = upm.id內部連接 mh.child_id = u.id或mh.role_id上的mh.child_id 012h= ur.role_id left外部連接(jbpm4_task jt內部連接process_flow pf on pf.pid = jt.execution_id_並且pf.grievance_mgmt_id不爲空) on jt.assignee_ = u.user_id其中mh.parent_id =? (角色ID = 2),{角色ID = 4},{角色ID = 1},{角色ID = 8},{角色ID = 38}, {角色ID = 22},{角色ID = 69}中的mh.role_id或mh.role_id。 ],[{role_id = 2},{role_id = 4},{role_id = 1}, {role_id = 8},{role_id = 38},{role_id = 22},{role_id = 69}],[{role_id = {2}, {role_id = 4},{role_id = 1},{role_id = 8},{role_id = 38},{role_id = 22}, {role_id = 69}],[{role_id = 2}, {role_id = 4},{role_id = 1},{role_id = 8}, {role_id = 38},{role_id = 22},{role_id = 69}],[{role_id = 2},{role_id = 4} , {role_id = 1},{role_id = 8},{role_id = 38},{role_id = 22}, {role_id = 69}],[{role_id = 2},{role_id = 4},{role_id = 1},{role_id = 8}, {role_id = 38},{role_id = 22},{role_id = 69}],[{role_id = 2},{role_id = 4}, {role_id = 1} role_id = 8},{role_id = 38},{role_id = 22},{role_id = 69 }]) group by u.id,u.user_id order by count(pf.id)]; 嵌套的異常是com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL語法中有一個 錯誤;檢查與您的 MySQL服務器版本對應的手冊,以找到在[{role_id = 2}, {role_id = 4},{role_id = 1},{role_id = 8},{role_id = 38} ,'{role_id = 22},'at line 1
您可能需要提供一些更多的細節,但異常說你的SQL語法不正確。嘗試打印'queryString'並單獨運行。 – austin
確保你的數組是你想要的。我有一種感覺,它不 – Alexander
我認爲你有一個額外的'}',它會在if語句到達之前關閉'for'循環。 Miscopied的代碼也許?或者它實際上看起來像你的代碼? – jaredk