使用String / Varchar参数的Spring JDBCTemplate查询

时间:2012-09-14 23:46:14

标签: java spring jdbc jdbctemplate

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String query = "select a.alert_id from alert a where (alert.last_execution is null or trunc(alert.last_execution) < to_date(?, 'dd/MM/yyyy') ) and alert.frequency = ?";
jdbcTemplate.query(query, new Object[] {sdf.format(new Date()), "DAILY"}, new AlertRowMapper())

它在查询行中返回一个异常:

SQL状态[99999];错误代码[17004];列类型无效;嵌套异常是java.sql.SQLException:列类型无效     在org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)

有人知道它为什么不起作用吗?

由于

1 个答案:

答案 0 :(得分:0)

尝试将Date对象直接发送到jdbcTemplate参数,然后从查询中删除to_date()部分。 Spring应该自动转换数据类型,而不是在应用程序中转换为字符串。