BadSqlGrammarException в шаблоне Spring jdbc

Я использую Jdbctemplate для получения одной записи из базы данных. Вот метод.

public Advocate queryPrimaryDetails(String regCaseType, String regNo, String regYear) throws SQLException {
        String sql = "select pet_adv,pet_adv_cd from civil_t where regcase_type=? and reg_no=? and reg_year=?";
        Advocate list = (Advocate) getJdbcTemplate().queryForObject(sql, new Object[]{Integer.valueOf(regCaseType),Integer.valueOf(regNo),Integer.valueOf(regYear)},new RowMapper<Object>() {
            public Object mapRow(ResultSet resultSet, int rowNum) throws SQLException {
                return resultSet.next() ? new Advocate(resultSet.getInt("pet_adv_cd"), resultSet.getString("pet_adv"))
                        : null;
            }
        });
        System.out.println(list);
        return list;
    }

В моем сценарии вполне возможно НЕ получить ответ на мой запрос, поэтому мой вопрос заключается в том, как мне обойти следующее сообщение об ошибке.

Статус HTTP 500 - Ошибка обработки запроса; вложенное исключение - org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; плохая грамматика SQL [выберите pet_adv, pet_adv_cd из civil_t, где regcase_type =?]; вложенное исключение - org.postgresql.util.PSQLException: ОШИБКА: отношение "civil_t" не существует

Попробуйте использовать двойные кавычки вокруг имени таблицы select pet_adv,pet_adv_cd from "civil_t" ... или имени базы данных select pet_adv,pet_adv_cd from database.civil_t ...

Raymond Nijland 19.08.2018 17:30

Все другие таблицы в той же базе данных успешно выполняются вместе с этим запросом, когда я пытаюсь выполнить в построителе запросов, он работает. проблема не в запросе.

Ajay Takur 19.08.2018 17:31

Префикс имени базы данных перед таблицей не получился.

Ajay Takur 19.08.2018 17:33
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
685
1

Ответы 1

Исключение возникает из базового JDBC-драйвера postgresql, потому что таблица civil_t не найдена в базе данных, к которой вы подключаетесь.

Только запрос был выполнен в построителе запросов, он работает.

Ajay Takur 19.08.2018 17:00

либо вы не подключаетесь к отсутствию БД, либо таблица не существует в БД.

Ajay Takur 07.09.2018 18:13

Другие вопросы по теме