Вложенное исключение: java.sql.SQLException: неверное имя столбца ORACLE. - PullRequest
4 голосов
/ 06 марта 2012

Я попытался выполнить следующий запрос Oracle с помощью JdbcTemplate в Java:

select RESOURCE_ID 
from REPRO_PRINTING_JOB 
where (USER_ID=? and PRINTING_CENTER_ID=?) 
group by RESOURCE_ID 
union all 
select RESOURCE_ID 
from REPRO_PRINTING_JOB_OLD 
where (USER_ID=? and PRINTING_CENTER_ID=? and STATE='CM') 
group by RESOURCE_ID

Запрос отлично работает в браузере запросов Oracle, но он не работает во время выполнения в Java.Что может быть источником этой проблемы?Я слышал что-то о Jdbc не может обрабатывать с учетом регистра.Это правда?

ДОБАВЛЕННЫЙ КОД JAVA (ИСПРАВЛЕНО): я вызываю запрос с помощью getStatement (), который получает запрос из внешнего источника (файла свойств), как показано ниже:

   public List<PrintingJob> getPrintingJobsByCreatedUserId(String createdUserId, String userId) {
    if(log.isDebugEnabled()) {
        log.debug("getReportItemsByUserId(" + createdUserId + "," + userId + ")");
    }
    try {               
        System.out.println("getPrintingJobsByResourceId : createdUserId :"+createdUserId+",userId : "+userId);
        return getJdbcTemplate().query(getStatement("gen.report.userid"),                       
                new Object[]{createdUserId, userId, createdUserId, userId},                     
                new PrintingJobMapper());           
        } catch (DataAccessException ex) {              
            log.error("Error executing query: " + ex.getClass() + ":" + ex.getMessage());               
            return null;            
        }       
}

1 Ответ

2 голосов
/ 14 марта 2014

Причина, по которой вы получаете эту ошибку, заключается в том, что это ошибка драйвера JDBC или API java.sql, а не базы данных.Обратите внимание на отсутствие ORA-XXXXX в сообщении об исключении.Если бы он содержал это, то это было бы связано с синтаксисом, неверным именем или чем-то, что могло бы пойти не так на стороне сервера базы данных.

SQLExceptions выбрасываются в Java для всего, что связано с API SQL, а не только из-за ошибокчто происходит, когда операторы отправляются по соединению ... В этом случае вполне вероятно, что запрос на самом деле выполнялся правильно, но API набора результатов выдает ошибки (rs.getLong ("бла"), где столбец "бла"не существует в вашем выборе) вызывает проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...