Я использую 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" не существует
Все другие таблицы в той же базе данных успешно выполняются вместе с этим запросом, когда я пытаюсь выполнить в построителе запросов, он работает. проблема не в запросе.
Префикс имени базы данных перед таблицей не получился.




Исключение возникает из базового JDBC-драйвера postgresql, потому что таблица civil_t не найдена в базе данных, к которой вы подключаетесь.
Только запрос был выполнен в построителе запросов, он работает.
либо вы не подключаетесь к отсутствию БД, либо таблица не существует в БД.
Попробуйте использовать двойные кавычки вокруг имени таблицы
select pet_adv,pet_adv_cd from "civil_t" ...или имени базы данныхselect pet_adv,pet_adv_cd from database.civil_t ...