当前位置: 首页 > 知识库问答 >
问题:

HibernateTemplateBulkUpdate使用IN-子句

施冠玉
2023-03-14

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

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

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

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

共有2个答案

花烨
2023-03-14

它非常非常奇怪,我找了很多也找不到解决办法,医生说它是绑定值的数量"?"查询字符串中的参数,但当我提供列表作为参数时-它不作为字符串绑定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());
越鸿才
2023-03-14

这个问题可能与此hibernate模板更新无法工作的原因相同

上述问题的回答可以解决这个问题。希望有帮助。快乐学习:)

 类似资料:
  • 问题内容: 使用Java,hibernate。 我有一个查询 我无法使用上面的代码将此参数绑定到pixIds。什么是正确的方法? 注意:这里的查询是我的实际查询的简化版本。 问题答案: 以下方法适用于 公共查询setParameterList(String name,Collection vals)引发HibernateException

  • 问题内容: 为什么以下SQL不能给我任何东西 虽然 吸引我的行 问题答案: 您可以根据需要执行一些动态SQL,但我认为这并不是真正的竞争。

  • 问题内容: 我正在使用iBATIS创建选择语句。现在,我想用iBATIS实现以下SQL语句: 使用以下方法,语句准备不正确,并且没有结果返回: iBATIS似乎重新构建了该列表,并尝试将其解释为字符串。 如何正确使用IN子句? 问题答案: 这是一篇博客文章,回答您的问题: iBatis:使用SQL IN关键字支持数组或列表参数 在Java中,您应该传入java.util.List。例如

  • 问题内容: 我正在寻找使用sqlalchemy执行此查询。 我只想要喜欢(薰衣草和扁豆汤)或(黑胡萝卜汁)的孩子。另外,这可能是大量喜欢的颜色和食物的列表(可能> 10K),因此,我想分批进行。 问题答案: 您需要构造:

  • 问题内容: 我正在寻找使用sqlalchemy执行此查询。 我只想要喜欢(薰衣草和扁豆汤)或(黑胡萝卜汁)的孩子。另外,这可能是大量喜欢的颜色和食物的列表(可能> 10K),因此,我想分批进行。 这是相似的,但并不能完全理解: Sqlalchemy in子句 问题答案: 您需要构造:

  • 问题内容: 这是我第一次使用JDBCTemplates,并且遇到了需要使用如下查询的情况: 我怎么做?我已经尝试过传递列表/数组值,但是没有成功,我遇到了异常。我当前的代码如下所示: Spring文档指出,除了生成所需数量的“?”之外,没有其他方法可以这样做。占位符以匹配参数List的大小。有解决方法吗? 问题答案: 我认为您不能将其作为单个“?”来完成。与Spring JDBC模板无关,它是核心