2011-09-02 227 views
0

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

因此,我调用

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

这给在Oracle的结果,但与

org.springframework.jdbc.InvalidResultSetAccessException failes:PreparedStatementCallback;对于SQL无效的ResultSet访问[选择sq.name作为名称from(选择t1.name作为来自table1的名称t1左外连接table2 t2在t2.id = t1.fk_id其中t1.name不为null)sq where upper(name )like upper('?')];嵌套的异常是java.sql.SQLException中:无效的列索引

EDITED

请求是一个简单的字符串对象,它实际上是您在异常消息看到一个SQL。该E打开对象有无论在这种情况下,我离开它空(用于测试ourpose)

,但只为您确保这就是:

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

什么是'请求'?它是什么类型的对象? – skaffman

回答

2

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

+0

好吧,我会尝试,但更简单的查询可以正常工作'upper('?')' – ayscha

+0

好的,你完全正确!我没有认识。 – ayscha