java - JdbcTemplate 嵌套查询的问题

标签 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; invalid ResultSet access for SQL [select sq.name as name from (select t1.name as name from table1 t1 left outer join table2 t2 on t2.id = t1.fk_id where t1.name is not null ) sq where upper(name) like upper('?')]; nested exception is java.sql.SQLException: Invalid column index

已编辑

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();
           }
       });

最佳答案

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

关于java - JdbcTemplate 嵌套查询的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7281420/

相关文章:

java - 是否可以调用绝对函数在 TYPE_FORWARD_ONLY 结果集中向前移动行?

java - Tomcat JDBC连接池(释放连接)

Java 类型映射到 Java SQL 类型 Util

java - 使用Spring jdbcTemplate时如何检查列名是否存在?

java - ArrayUtils.contains 对于已存在的字符串返回 false

java - (java) DFS遍历中的怪异List值

java - 在 Java 中切片字节数组

java - 为什么 NetBeans 不显示有关可变长度参数的警告

java - JDBC 使用 url 进行连接

Java/Spring JDBC : Batch Insert into 2 Tables: Obtain FK ID from 1st Batch Insert Required for 2nd Table