0

select ST_AsText(column_name)hibernate を使用してテーブルから実行する必要がありますcreateSQlQuery()

そのクエリを実行すると、結果セットに列名が見つからないことが示されます。
しかし、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");

エラー メッセージ:

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

ここで何が欠けていますか?

4

3 に答える 3

0

列名に大文字を使用しているため、引用符を追加する必要があります。

Query query = session.createSQLQuery("select ST_AsText(\"END2536\") from country   where        object='something'");
于 2013-07-16T07:51:44.260 に答える
0

みんなありがとう。私は問題を理解しました。これは、結果セットにエイリアス名があり、クエリ キャッシュを有効にしたためです。したがって、列名 (END2536) は結果セットにありませんでした。クエリのキャッシュ部分をコメントすると、正常に動作します。

于 2013-07-17T05:11:22.017 に答える
0

エラーメッセージは非常に明確です-言う

この ResultSet には列名 END2536 が見つかりませんでした。

したがって、クライアントで動作すると言うと、Hibernate がクエリを何らかの形で変更しているように見えます。

ここで説明されているように SQL クエリのログを有効にし、Hibernate が送信するものを確認します。

于 2013-07-16T07:47:11.750 に答える