【发布时间】:2018-02-05 10:50:48
【问题描述】:
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);
最后一行抛出:
java.sql.SQLException: 无法在 java.util.ArrayList 之间进行转换 和 JAVA_OBJECT 同时使用 IN 子句查询数据库
已经尝试使用NamedParameterJdbcTemplate,它在列表中要求引号,这可能导致sql注入。使用 jdbcTemplate 来克服这个问题。
感谢任何帮助。
【问题讨论】:
-
从 Object[] 参数中移除 []。 List 是一个对象,但它不是对象数组
-
我怀疑是这种情况,queryForObject 函数需要一个对象数组作为参数。
-
你自己说结果是'List'。
-
'dates' 是一个列表,但 'params' 必须是一个 Object 数组。假设我再添加一个 where 子句作为制造商,那么我将不得不在“params”数组中传递 2 个值。即 Object[] 参数 = {日期,制造商}
-
如果这是一个列表,并且你需要一个数组,你试过 dates.ToArray() 吗?
标签: java sql-server hibernate jdbctemplate