如何使用hibernateTemplate执行bulkUpdate操作。以下代码抛出
引起:org.hibernate.QueryParameterException:位置超出 声明的序数参数的数量。请记住,序数 参数是基于1的!位置:2
HibernateTemplate.bulkUpdate("update Address address set address.city = 'Oakland' where address.user in (:users)", users);
如何通过将用户列表作为参数传递来实现此批量更新操作???
答案 0 :(得分:0)
它非常奇怪,我搜索了很多但也找不到解决方案,文档说它是绑定数值的“?”查询字符串中的参数但是当我提供list作为参数时 - 它不作为字符串绑定IN子句。所以我做了一个解决方法 - 提供参数为String:
StringBuilder inClauseparams = new StringBuilder("(");
for (int i = 0; i < notificationIDs.size(); i++) {
inClauseparams.append(""+notificationIDs.get(i));
if( i != notificationIDs.size()-1 )
inClauseparams.append(",");
else
inClauseparams.append(")");
}
hibernateTemplate.bulkUpdate("update Notification set isSeen = true where id in "+inClauseparams.toString());