JdbcTemplate嵌套查询的问题

时间:2011-09-02 09:15:36

标签: java jdbc jdbctemplate

我正在尝试使用嵌套查询与JdbcTemplate,但发现问题,在我看来它不支持嵌套查询..我是对的吗?或者我需要改变什么?

所以,我调用

 getJdbcTemplate().query(request, new Object[]{name}...) 
 // request is query which you can see in error message

在oracle中给出了结果,但是

会导致错误
  

org.springframework.jdbc.InvalidResultSetAccessException:PreparedStatementCallback; SQL的强无效ResultSet访问 [选择sq.name作为名称(选择t1.name作为名称,从table1 t1左外连接table2 t2 on t2.id = t1.fk_id,其中t1.name不为null)sq where upper (姓名)喜欢上层('?')] ;嵌套异常是java.sql.SQLException:列索引无效

EDITED

request是一个简单的String对象,它实际上是一个在异常消息中看到的sql。 eturn对象在这种情况下无关紧要,因为我把它留空(用于测试我们的)

但只是为了让你确定它是:

List<MyObject> list = getJdbcTemplate().query(request, new Object[]{"Somename"}, new RowMapper() {
           public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
               return new MyObject();
           }
       });

1 个答案:

答案 0 :(得分:2)

尝试将upper('?')更改为upper(?)。通过将?放在引号中,数据库不会意识到您正在处理参数。