我正在尝试使用嵌套查询与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();
}
});
答案 0 :(得分:2)
尝试将upper('?')
更改为upper(?)
。通过将?
放在引号中,数据库不会意识到您正在处理参数。