【发布时间】:2019-07-04 09:53:30
【问题描述】:
我是 Spring - JDBC 的初学者。 我正在尝试使用具有绑定变量的查询以及其中的 IN 条件从表中检索employee_id。
我收到了 SQLException
“无效的列类型” - 原因: org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; SQL 的未分类 SQLException [选择 来自 table_employee 的employee_id,其中 age=:varTwo 和标记 (:varOne) 和名称 =:varThree]; SQL 状态 [99999];错误代码 [17004]; 无效的列类型;嵌套异常是 java.sql.SQLException: 无效的列类型
你能告诉我哪里错了。
我尝试过使用 Long 、 Integer 、 String 等类型,但我仍然得到“无效的列类型”
年龄是 - NUMBER
标记是 - NUMBER
名称是 - VARCHAR
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("varOne", varOne);
parameters.addValue("varTwo", Long.parseLong(varTwo));
parameters.addValue("varThree", varThree);
Long employeeId = jdbcTemplate.queryForObject("select employee_id from table_employee where age=:varTwo and marks in (:varOne) and name =:varThree" , Long.class , parameters);
我应该得到这个 SQL 的结果作为“员工 ID”。
【问题讨论】:
-
看起来您没有使用 NamedParameterTemplate - 请edit您的问题并添加初始化您的
jdbcTemplate的代码 -
私有 JdbcTemplate jdbcTemplate; @Autowired public EmployeeImpl(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; }
-
我只是自动接线。
-
你正在自动连接
NamedParameterJdbcTemplate? -
不......我不知道
标签: java spring jdbc oracle11g jdbctemplate