异常如下:当我把红色部分的SQL语句拿到PL/SQL上能查出数据,不会报错啊??这是怎么回事啊???
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL gram
mar [select iptca_cm_probe_node.node_id,res_objects.ip_addr from dnms.iptca_cm_p
robe_info,dnms.iptca_cm_probe_node,dnms.res_objects where dnms.iptca_cm_probe_no
de.probe_id=dnms.iptca_cm_probe_info.probe_id and dnms.res_objects.cuid = dnms.i
ptca_cm_probe_info.cuid]; nested exception is java.sql.SQLException: 列名无效
Caused by:
java.sql.SQLException: 列名无效
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:125)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:162)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:227)
at oracle.jdbc.driver.OracleStatement.get_column_index(OracleStatement.j
ava:3047)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl
.java:1861)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:155
9)
at org.jboss.resource.adapter.jdbc.WrappedResultSet.getString(WrappedRes
ultSet.java:405)
.
.
.
.
.
org.springframework.jdbc.BadSqlGrammarException: StatementCallback; bad SQL gram
mar [select iptca_cm_probe_node.node_id,res_objects.ip_addr from dnms.iptca_cm_p
robe_info,dnms.iptca_cm_probe_node,dnms.res_objects where dnms.iptca_cm_probe_no
de.probe_id=dnms.iptca_cm_probe_info.probe_id and dnms.res_objects.cuid = dnms.i
ptca_cm_probe_info.cuid]; nested exception is java.sql.SQLException: 列名无效
Caused by:
java.sql.SQLException: 列名无效
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:125)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:162)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java
:227)
at oracle.jdbc.driver.OracleStatement.get_column_index(OracleStatement.j
ava:3047)
at oracle.jdbc.driver.OracleResultSetImpl.findColumn(OracleResultSetImpl
.java:1861)
at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:155
9)
at org.jboss.resource.adapter.jdbc.WrappedResultSet.getString(WrappedRes
ultSet.java:405)
.
.
.
.
.
jdbcTemplete.query(sqlexp, new RowCallbackHandler() {
public void processRow(ResultSet rs)
throws SQLException {
map.put(rs.getObject(id).toString(), rs.getObject(label));
}
});
为什么要这样用?? 还写了个回调,jdbcTemplate里面有多少查询方法,楼主去看看还有 sql在程式里面拼接好,再用jdbcTimplate.queryForList(sql,objcet[]);做,在之前,先断点打在sql那,然后复制sql到pl/sql里面执行,看看什么问题
我也碰到了,查到你的了,其实这个是你在读取值的时候,RowMapper中,用ResultSet获取某个值的时候,你取错了某一个列名。