Spring 高手进来!关于jdbcTemplate的一个奇怪问题。

tttk 2007-06-13 06:41:33
在一个jdbcTemplate.execute的内部,通过同一个jdbcTemplate进行另一个查询:

jdbcTemplate.execute(sql1, new PreparedStatementCallback() {
...
jdbcTemplate.queryForObject(sql2, new Object[]{...});
});


如果内部的查询语句这样写:
jdbcTemplate.queryForObject("select yearamnt from t1 where userid=? AND tallydate>?", new Object[]{"123", "2007-02-01"}),其中tallydate是日期字段。查询出错,错误类型: java.lang.reflect.invocationtargetexception

可是如果这样写:
jdbcTemplate.queryForObject("select yearamnt from t1 where userid=? AND tallydate>'2007-02-01'", new Object[]{"123"}),则执行正常。

上面出错的语句如果不嵌套执行,则也没有问题。

请指点。
...全文
349 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tttk 2007-06-14
  • 打赏
  • 举报
回复
非常感谢,问题解决了。

不过还是有几点疑惑:
1、昨天测试的时候,我的确换成java.sql.Date类型,调试还是失败——可能原因是TOmcate的HotSpot的问题;
2、在JUnit中单独jdbcTemplate执行上面的语句,tallyDate传递的是字符串,运行完全正常。

加分!
ldyao 2007-06-13
  • 打赏
  • 举报
回复
不好意思,上面说错了。
应该是:
jdbcTemplate.queryForObject("select yearamnt from t1 where userid=? AND tallydate>?", new Object[]{"123", new java.sql.date(2007,1,1)}),

或者用Date.valueOf("2007-02-01")
ldyao 2007-06-13
  • 打赏
  • 举报
回复
jdbcTemplate.queryForObject("select yearamnt from t1 where userid=? AND tallydate>?", new Object[]{"123", new java.sql.date(2007,2,1)}),

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧