我有一个表issue_assigned user_id为整数,发行号为Varchar。可以将问题分配给多个用户。
现在有一个条件,如果问题之前分配给 3 个用户,然后管理员只想将其分配给 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 是一个字符串,其中包含由逗号(,(分隔的用户 ID。执行时,我得到字符串不能被命名为整数错误。
如何保留所需的用户并删除其余用户?我将必须进行哪些更改?
userIds 是一个字符串,其中包含由逗号(,( 分隔的 userId
不应该。您应该只传递一个数组或用户 ID 集合。Hibernate将通过为每个用户ID添加一个参数占位符来为您创建相应的SQL准备语句。
也不需要:userIds
周围的括号。
只接受一个参数的setParameter
,你必须使用setParameterList
它接受参数集合而不是字符串:
query.setParameterList("userIds", userIds);
您的查询将是
String hql = "delete from issue_assigned where issue_number=:issueNum AND assigned_to_user_id not in :userIds";
并使用 query.setParameterList 如下
query.setParameterList("userIds", userIds);
Hibernate 将使用传递的集合创建预准备语句。