我有一个表 issue_assigned ,其中user_id为Integer,发行号为Varchar。可以将问题分配给多个用户。

现在存在一个条件,如果该问题先前已分配给3个用户,然后admin只希望将其分配给2个用户,则系统应删除我编写的以下代码的第3个用户条目

String hql = "delete from issueAssigned  where issueNumber=:issueNum AND assignedToUserId not in (:userIds)";
Query query = getHibernateTemplate().getSessionFactory().getCurrentSession().createQuery(hql);
query.setParameter("issueNum", issueNum);
query.setParameter("userIds", userIds);
if(query.executeUpdate() > 0){
    return "success";
}else{
    return "error";
}

userIds是一个字符串,其中包含用逗号(,)分隔的userId。执行时,我无法将String强制转换为整数错误。

如何保留所需的用户并删除其余用户?我将要做哪些更改?

最佳答案

userIds是一个字符串,其中包含用逗号(,)分隔的userId

不应该这样您应该只传递用户ID的数组或集合。通过为每个用户ID添加参数占位符,Hibernate将为您创建相应的SQL预准备语句。

并且也不需要:userIds的括号。

10-08 09:04