1

如何使用 hibernateTemplate 执行 bulkUpdate 操作。以下代码抛出

原因:org.hibernate.QueryParameterException:位置超出了声明的序数参数的数量。请记住,序数参数是基于 1 的!职位:2

HibernateTemplate.bulkUpdate("update Address address set address.city = 'Oakland' where address.user in (:users)", users);

如何通过传递用户列表作为参数来实现这个批量更新操作???

4

2 回答 2

0

它非常非常奇怪,我搜索了很多也找不到解决方案,文档说它将值的数量绑定到“?” 查询字符串中的参数,但是当我提供列表作为参数时 - 它不绑定 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());
于 2017-03-14T12:08:09.687 回答
0

这个问题可能与为什么-this-hibernate-template-bulkupdate-doesnt-work重复

回答上述问题可能会解决这个问题。希望能帮助到你。快乐学习:)

于 2015-09-11T07:19:35.857 回答