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

sprint namedParameterJdbcTemplate batchUpdate with in子句

桂杰
2023-03-14

我正在使用spring将批处理记录插入数据库。但我得到了一个错误:java。sql。SQLException:无法在java之间转换。util。ArrayList和JAVA\u对象。你能帮帮我吗?我做错什么了

private static final String INSERT_BATCH_QUERY ="INSERT INTO TEST_TABLE (ID,TEST_ID) select :id,  substring((SELECT ', ' + USERS.COMMON_NAME FROM USERS WHERE USERS.ID IN ( :testIds ) FOR XML PATH('')), 2, 4000);


public class Test{

private int id;
private List<Intenger> testIds;
    //**getters and setters**//
}

public static void Main(String... args){
        List<Test> myTe=new ....
        SqlParameterSource[] sqlParameterSource = SqlParameterSourceUtils.createBatch(myTe.toArray());
        result = namedParameterJdbcTemplate.batchUpdate(INSERT_BATCH_QUERY, sqlParameterSource); 
}

错误:

Caused by: java.sql.SQLException: Unable to convert between java.util.ArrayList and JAVA_OBJECT.
    at net.sourceforge.jtds.jdbc.Support.convert(Support.java:633)
    at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setObjectBase(JtdsPreparedStatement.java:590)
    at net.sourceforge.jtds.jdbc.JtdsPreparedStatement.setObject(JtdsPreparedStatement.java:907)
    at com.jolbox.bonecp.PreparedStatementHandle.setObject(PreparedStatementHandle.java:909)
    at org.springframework.jdbc.core.StatementCreatorUtils.setValue(StatementCreatorUtils.java:426)
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValueInternal(StatementCreatorUtils.java:235)
    at org.springframework.jdbc.core.StatementCreatorUtils.setParameterValue(StatementCreatorUtils.java:166)
    at org.springframework.jdbc.core.BatchUpdateUtils.setStatementParameters(BatchUpdateUtils.java:65)
    at org.springframework.jdbc.core.namedparam.NamedParameterBatchUpdateUtils.access$000(NamedParameterBatchUpdateUtils.java:32)
    at org.springframework.jdbc.core.namedparam.NamedParameterBatchUpdateUtils$1.setValues(NamedParameterBatchUpdateUtils.java:48)
    at org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:1010)
    at org.springframework.jdbc.core.JdbcTemplate$4.doInPreparedStatement(JdbcTemplate.java:989)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:644)
    ... 26 more

如果使用硬编码值:

private static final String INSERT_BATCH_QUERY ="INSERT INTO TEST_TABLE (ID,TEST_ID) select :id,  substring((SELECT ', ' + USERS.COMMON_NAME FROM USERS WHERE USERS.ID IN ( 1234,654,55 ) FOR XML PATH('')), 2, 4000);

或者当我只通过一个int时,它就起作用了。

请帮忙:)

共有1个答案

姜华翰
2023-03-14

使用SqlParameterSource定义参数,以便查询将替换占位符SqlParameterSource参数=新映射SqlParameterSource(“testid”,testid)。附加值(“id”,id)

 类似资料:
  • 问题内容: 是否可以执行这样的mysql查询? 我需要在一般的“ where”子句中使用子查询的结果。 问题答案: 您可以将其包装在子查询中,如下所示:

  • 问题内容: 我们正在开发一个使用EJB连接到数据库的Web应用程序。 在我们的数据库模型中,我们有一个移动设备表,另一个有功能表,最后一个有手机模型映射功能值的表。模型(id_model,…)功能(id_feature,…)model_features(id_model,id_feature,值) 我们想要执行一个查询,以按匹配特征的数量对模型进行排序。就是说,我们传递了一个要匹配的功能列表(即从

  • 问题内容: 有什么区别,每个应该有什么区别? 如果我正确理解该理论,则查询优化器应该可以互换使用。 问题答案: 它们不是同一件事。 考虑以下查询: 和 第一个将返回订单及其订单号的行(如果有)。第二个将返回所有订单,但只有订单将具有与之关联的任何行。 使用,子句 实际上是 等效的。但是,仅仅因为它们在功能上相同而产生相同的结果,并不意味着这两种子句具有相同的语义。

  • 问题内容: 我最近才刚开始使用SQLAlchemy,但仍无法解决某些概念。 归结为基本元素,我有两个这样的表(通过Flask-SQLAlchemy): 我将如何查询用户列表及其最新帖子(不包括无帖子的用户)。如果我使用的是SQL,则可以执行以下操作: 因此,我确切地知道“期望的” SQL可以达到我想要的效果,但是不知道如何在SQLAlchemy中“正确地”表达它。 编辑:如果很重要,我使用的是SQ

  • 问题内容: 该问题可能特定于SQL Server。当我编写查询时,例如: 是否对表的EACH行执行Case内的Case内的函数调用fnQuarterDate(或任何子查询)? 如果我预先在类似这样的变量中获取函数(或任何子查询)的值,会怎么样呢? 我知道在MySQL中,如果WHERE子句中的IN(..)内有子查询,则对每一行都执行该子查询,我只想为SQL SERVER查找相同的子查询。 … 只需填

  • WeX5用的都是标准技术,连基本框架也只用主流。开发者会发现WeX5用的所有基本技术和框架,都是业界的标准和主流: 一、UI技术:WeX5的UI技术和标准是html+js+css,框架是jquery、require js和bootstrap,都是主流的不能再主流,标准得不能在标准的东西了。 二、本机apiframe work:WeX5采用了codova/phonegap,也是最主流的了,MS的vi

  • WeX5用的都是标准技术,连基本框架也只用主流。开发者会发现WeX5用的所有基本技术和框架,都是业界的标准和主流: 一、UI技术:WeX5的UI技术和标准是html+js+css,框架是jquery、require js和bootstrap,都是主流的不能再主流,标准得不能在标准的东西了。 二、本机apiframe work:WeX5采用了codova/phonegap,也是最主流的了,MS的vi

  • 主要内容:1. GROUP BY,2. HAVING子句,3.ORDER BY子句以下是一些觉的SQL子句: 1. GROUP BY SQL 语句用于将相同的数据排列到分组中。 语句与SQL SELECT语句一起使用。 语句在语句中跟随子句,并在句之前。 语句与聚合函数一起使用。 语法 假设有一个表:PRODUCT_MAST ,它的结构和数据记录如下所示 - PRODUCT COMPANY QTY RATE COST Item1 Com1 2 10 20 Item2 Com2