2013-07-15 3 views
0

Мне нужно выполнить select ST_AsText(column_name) из таблицы, используя спящий режим createSQlQuery().Использование функций postgis в hibernate SQL Query

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

Query query = session.createSQLQuery("select ST_AsText(END2536) from country where  object='something'"); 
((SQLQuery) query).addScalar(column, Hibernate.STRING); 
String geomValue = (String) query.uniqueResult(); 
query.setCacheable(true); 
query.setCacheRegion("query.CommonManagement"); 

Ошибка Msg:

16:56:27,076 INFO [org.hibernate.type.StringType] (http--172.20.211.235-8080-1) could not read column value from result set: END2536; The column name END2536 was not found in this ResultSet. 
16:56:27,077 WARN [org.hibernate.util.JDBCExceptionReporter] (http--172.20.211.235-8080-1) SQL Error: 0, SQLState: 42703 
16:56:27,077 ERROR [org.hibernate.util.JDBCExceptionReporter] (http--172.20.211.235-8080-1) The column name END2536 was not found in this ResultSet. 
16:56:27,080 ERROR [stderr] (http--172.20.211.235-8080-1) org.hibernate.exception.SQLGrammarException: could not execute query 

Что я здесь отсутствует?

+1

Не могли бы вы добавить источник, который используете, и сообщение об ошибке? –

+0

Запрос запроса = session.createSQLQuery ("выберите ST_AsText (END2536) из страны, где object = 'something'; ((SQLQuery) query) .addScalar (column, Hibernate.STRING); Строка geomValue = (String) query.uniqueResult(); query.setCacheable (true); query.setCacheRegion ("query.CommonManagement"); –

+0

Ошибка Msg 16: 56: 27 076 INFO [org.hibernate.type.StringType] (http-172.20.211.235- 8080-1) не удалось прочитать значение столбца из набора результатов: END2536; имя столбца END2536 не было найдено в этом ResultSet. 16: 56: 27 077 WARN [org.hibernate.util.JDBCExceptionReporter] (http-172.20.211.235- 8080-1) Ошибка SQL: 0, SQLState: 42703 16: 56: 27,077 ОШИБКА [org.hibernate.util.JDBCExceptionReporter] (http - 172.20.211.235-8080-1) Название столбца END253 6 не найден в этом ResultSet. 16: 56: 27,080 ОШИБКА [stderr] (http-172.20.211.235-8080-1) org.hibernate.exception.SQLGrammarException: не удалось выполнить запрос –

ответ

0

Спасибо, ребята. Я выяснил проблему. Это связано с тем, что в результирующем наборе было имя псевдонима, и я включил кеширование запросов. Поэтому имя столбца (END2536) не было в наборе результатов. Когда я прокомментировал часть кэширования запроса, она работает нормально.

0

Сообщение об ошибке вполне понятно, - говорит

The column name END2536 was not found in this ResultSet.

Так что, если вы говорите, что работать в клиенте, то кажется, что Hibernate изменяет запрос каким-то образом.

Включить ведение журнала SQL-запросов, как описано here, и проверить, что отправляет Hibernate.

0

Вам нужно добавить дополнительные кавычки, так как вы используете заглавные буквы для имени столбца.

Query query = session.createSQLQuery("select ST_AsText(\"END2536\") from country where  object='something'"); 
Смежные вопросы