【发布时间】:2021-08-19 16:34:48
【问题描述】:
我收到错误 org.springframework.dao.EmptyResultDataAccessException 带有 detailMessage "不正确的结果大小:例外 1,实际 0"
执行时:
Long id = jdbcTemplate.queryForObject("SELECT ID FROM SOME_TABLE WHERE SOME_PROP = ?", new Object[]{"00"}, Long.class);
但是当我执行后它可以工作:
Long id = jdbcTemplate.queryForObject("SELECT ID FROM SOME_TABLE WHERE SOME_PROP = '00'", Long.class);
描述列(Oracle DB):
ID - NUMBER(4)
SOME_PROP - CHAR(4)
这是一个演示问题的虚构示例。什么错误,请解释!!
【问题讨论】:
-
你为什么要传递一个数组作为参数(即
new Object[]{"00"})?您是否期望查找数组中的任何项目?喜欢SELECT ID FROM TABLE WHERE VALUE IN(?)? -
是的,它有帮助! "cast(? as char(n))" 问题只在 char 类型 (n) 中被发现!对于 varchar(n)、varchar2(n) 一切正常且无需强制转换。我认为这是 Oracle JDBC 驱动程序的问题。