【发布时间】:2016-09-21 16:21:27
【问题描述】:
我正在编写一个用于分页的 Oracle SQL 查询,它在 sql developer 中运行良好,但是当我尝试使用 Spring JDBC 模板运行 java 应用程序时,它会抛出
SQLException: 列类型无效
实际查询:
SELECT *
FROM (
SELECT a.*, rownum r__
FROM (
SELECT *
FROM Packet
ORDER BY packet_date_created DESC
) a
WHERE rownum < ((pageNumber*pageSize)+1)
)
WHERE r__ >= (((pageNumber-1)* pageSize)+1)
在 Java 中:
MapSQlParameterSource paramSource = new MapSQlParameterSource ()
paramSource.addValue("pageNumber", pageNumber.intValue())
paramSource.addValue("pageSize", pageSize.intValue())
String sqlString =
"SELECT * FROM (SELECT a.*, rownum r__ FROM ( SELECT FROM packet ORDER BY packet_date_created DESC ) a " +
"WHERE rownum < ((:pageNumber * :pageSize) + 1 )) " +
"WHERE r__ >= (((:pageNumber-1) * :pageSize) + 1)";
List<PacketDTO> packetDTOList = jdbcTemplate.query(sqlString, paramSource, new PacketMapper());
非常感谢您提出任何建议。
【问题讨论】:
-
您分享的 Java 代码清单不完整,
paramSource包含什么? -
我已经添加了..请看一下
-
你的包表的表定义是什么?您可以发布异常堆栈吗?你能发布你的 PacketMapper 代码吗?
-
您使用的是什么版本的 Oracle JDBC 驱动程序?
-
查看您的映射器并确保驱动程序支持您使用的所有 getXXX。
标签: sql oracle jdbc spring-jdbc