Java HibernateTemplateBulkUpdate使用IN-子句

Java HibernateTemplateBulkUpdate使用IN-子句,java,spring,hibernate,bulkupdate,Java,Spring,Hibernate,Bulkupdate,如何使用hibernateTemplate执行批量更新操作。下面的代码抛出 原因:org.hibernate.QueryParameterException:位置超出 声明的序数参数数。记得那个序数吗 参数是基于1的!职位:2 如何通过将用户列表作为参数传递来实现此批量更新操作???此问题可能与 以上问题的答案可以解决这个问题。希望能有帮助。愉快的学习:这很奇怪,我搜索了很多,也找不到解决方案,文档说它绑定了多少个值?查询字符串中的参数,但当我将列表作为参数提供时,它不会将in子句作为字符串绑定

如何使用hibernateTemplate执行批量更新操作。下面的代码抛出

原因:org.hibernate.QueryParameterException:位置超出 声明的序数参数数。记得那个序数吗 参数是基于1的!职位:2


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

此问题可能与


以上问题的答案可以解决这个问题。希望能有帮助。愉快的学习:

这很奇怪,我搜索了很多,也找不到解决方案,文档说它绑定了多少个值?查询字符串中的参数,但当我将列表作为参数提供时,它不会将in子句作为字符串绑定。因此,我做了一个变通方法——以字符串形式提供参数:

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());

你能试试吗。。HibernateTemplate.bulkUpdateupdate地址地址集Address.city='Oakland'其中Address.user in,users;我也尝试过,它抛出org.springframework.orm.hibernate3.HibernateSystemException:调用user.id的getter时发生IllegalArgumentException;嵌套异常为org.hibernate.PropertyAccessException:IllegalArgumentException调用getter user.idOhh时发生,看起来您的POJO不正确。检查您的用户Pojo的getter setter和字段id。但我想现在您可能已经得到了答案。谢谢Ketan的回复。我仍然被这个问题困扰着。。我还没有得到答案:请帮助我如何解决这个问题???是的。正如我前面提到的,看起来你的POJO不合适。检查字段id为的用户Pojo的getter setter。
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());