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"}),则执行正常。

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

请指点。
...全文
231 点赞 收藏 3
写回复
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)}),
回复 点赞
发动态
发帖子
Java EE
创建于2007-09-28

3.7w+

社区成员

22.5w+

社区内容

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区公告
暂无公告