Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JdbcTemplate抛出java.sql.SQLException:_Java_Sql Server_Hibernate_Jdbctemplate - Fatal编程技术网

JdbcTemplate抛出java.sql.SQLException:

JdbcTemplate抛出java.sql.SQLException:,java,sql-server,hibernate,jdbctemplate,Java,Sql Server,Hibernate,Jdbctemplate,最后一行抛出: java.sql.SQLException:无法在java.util.ArrayList之间转换 和JAVA_对象,同时使用IN子句查询数据库 已经尝试使用NamedParameterJdbcTemplate,它请求列表中的引号,这可能导致sql注入。使用jdbcTemplate来克服这个问题 非常感谢您的帮助。您需要一个参数源: String query = "Select count(*) from product where date_added in (?)"; Obj

最后一行抛出:

java.sql.SQLException:无法在java.util.ArrayList之间转换 和JAVA_对象,同时使用IN子句查询数据库

已经尝试使用NamedParameterJdbcTemplate,它请求列表中的引号,这可能导致sql注入。使用jdbcTemplate来克服这个问题


非常感谢您的帮助。

您需要一个参数源:

String query = "Select count(*) from product where date_added in (?)";

Object[] params = {dates}; //dates is a list of java.sql.Date

Long productCount = jdbcTemplate.queryForObject(query, params, Long.class);
设置id=。。。;
MapSqlParameterSource参数=新的MapSqlParameterSource();
参数。addValue(“ids”,ids);
List foo=getJdbcTemplate().query(“在(:id)中的foo中选择*”,
参数,getRowMapper());

这仅在getJdbcTemplate()返回类型为NamedParameterJdbcTemplate的实例时有效。还要确保将结果捕获到列表中。

从对象[]参数中删除[]。列表是一个对象,但它不是一个对象数组毫无疑问,是这样的,queryForObject函数需要一个对象数组作为参数。您自己说过结果是一个“列表”。“日期”是一个列表,但“参数”必须是一个对象数组。假设如果我添加一个where子句作为制造商,那么我必须在'params'数组中传递2个值。i、 e.Object[]params={dates,manufacturer}如果这是一个列表,并且您需要一个数组,您是否尝试过dates.ToArray()?我在问题中提到过,我尝试过这个修复。但它再次抛出java.sql.SQLException:关键字“')附近的语法不正确。根据我的研究,它希望在列表中使用单引号,这不是一个很好的方法。@faisalpathan,您是否尝试过删除
:ids
周围的括号?是的,当我删除括号时,它抛出了相同的错误,并显示了不同的错误消息“附近的语法不正确”和“
Set<Integer> ids = ...;

MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("ids", ids);

List<Foo> foo = getJdbcTemplate().query("SELECT * FROM foo WHERE a IN (:ids)", 
parameters, getRowMapper());