В настоящее время пытается получить очень простой запрос для запуска с помощью JdbcTemplate против БД Oracle, работает в следующее сообщение об ошибке:Oracle Invalid Column на простой подсчет запроса
PreparedStatementCallback; uncategorized SQLException for SQL; Invalid column type; nested exception is java.sql.SQLException: Invalid column type
Колонны
SYSTEM_UNIQUE_ID VARCHAR2(50 CHAR)
SYSTEM_TYPE_ID NUMBER(4,0)
Звонок
public int getSystemUniqueIDCount(final String systemUniqueID, final String systemTypeID) throws SQLException {
String checkCountQuery = "select count(*) as count from master_account where system_unique_id = ? and system_type_id = ?";
Map<String, Object> row = getTemplate().queryForMap(checkCountQuery , new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement pstmt) throws SQLException {
pstmt.setString(1, systemUniqueID.toUpperCase());
pstmt.setInt(2, Integer.parseInt(systemTypeID));
}
});
return (int) row.getOrDefault("count", 0);
}
Любая помощь будет очень полезна.
Разве это не попытка использования 'PrepardStatementSetter' [в качестве аргумента] (http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/ JdbcTemplate.html # queryForMap-java.lang.String-java.lang.Object ...-)? (Не то, что я использовал, но я не могу сопоставить то, что вы делаете с документами - возможно, я не вижу ничего очевидного!) –
Я согласен с Алексом, и я не понимаю, как ваш текущий фрагмент компилируется и, следовательно, как вы могли видеть runtime 'SQLException' с тем, что вы разделили. Вы хотите использовать 'queryForMap()' или, возможно, просто ['query()'] (http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core /JdbcTemplate.html#query-java.lang.String-java.lang.Object:A-org.springframework.jdbc.core.ResultSetExtractor-)? –
@AlexPoole после перезаписи документов вы можете использовать PreparedStatementSetter в качестве аргумента в запросе(), который я использовал широко, но не в queryformap(), который был бы там, где моя проблема. Почему он компилируется? По-видимому, PreparedStatementSetter считается действительным массивом объектов, хотя и фактически не представляет никакой ценности. Я переключился на query(), и теперь все работает так, как планировалось. благодаря вам и Мику. – iamthereplicant