Я работаю с Oracle Database 11.2.0.4 с ojdbc6.jar, и я использую apache commons dbutils v1.7, с JDK 7. Поэтому я использую QueryRunner и его метод в этой функции
private <T> List<T> executeQueryAndReturnBeanList(String query, Class<T> className, Object... param) throws SQLException {
Connection connection = getDBConnectionInstance();
DbUtils.loadDriver("oracle.jdbc.driver.OracleDriver");
ResultSetHandler<List<T>> beanListHandler = new BeanListHandler<>(className,new BasicRowProcessor(new GenerousBeanProcessor()));
QueryRunner runner = new QueryRunner();
List<T> list = runner.query(connection, query, beanListHandler, param);
return list;
}
и все нормально работает с запросом выбора без параметров привязки
SELECT * FROM PEOPLE WHERE GRUPPO = 1 AND LANG = 'en_US'
Но когда я выполняю этот запрос
String query = "SELECT * FROM PEOPLE WHERE GRUPPO = ? AND LANG = ?";
Это дает мне исключение SQL
java.sql.SQLException: ORA-00942: table or view does not exist
Query: SELECT * FROM PEOPLE WHERE GRUPPO = ? AND LANG = ? Parameters: [1, en_US]
at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:527)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:391)
at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:252)
at mypackage.executeQueryAndReturnBeanList(JDBCFunctions.java:199)
Я действительно не знаю почему. Я пытался использовать : P1,: P2 или : 1,: 2 вместо ? для привязки параметров, но ничего не произошло. Есть идеи?