【发布时间】:2015-07-11 21:18:46
【问题描述】:
我有一个表,其中有一列名为 @id
我想执行这个查询:
select DISTINCT "@id" from "osm_art_center"
在 Java 中(休眠)。
问题是 Hibrernate 无法理解 @id 并返回 id 列不存在的错误。
编辑
导致错误的代码:
String columnName="@id";
String tableName="osm_art_center";
ResultSet polygonSearch;
polygonSearch = st.executeQuery("select DISTINCT "+columnName+" from "+tableName);
已抛出的错误:
SQL Error: org.postgresql.util.PSQLException: ERROR: column "id" does not exist
【问题讨论】:
-
你应该显示你的代码和错误信息
-
我认为错误是每个 postgres 而不是 java 返回的。尝试在您的 SGBD 中执行此查询。
-
你为什么要命名一个列
"@id"?当然,这是合法的,但它是在自找麻烦。 -
另外,提示:
@是 Unicode,但与a是 Unicode 的方式相同。它是 ASCII 的 7 位子集的一部分,是几乎所有系统上最基本的字符集。 -
您发布的代码似乎不是 Hibernate 代码。您正在对名为
st的变量调用executeQuery并返回ResultSet。这看起来像是原始的 JDBC 代码。您认为 Hibernate 是如何参与其中的?您的查询也是select DISTINCT @id from osm_art_center,而不是您想要的select DISTINCT "@id" from "osm_art_center"。如果您想通过原始 JDBC 连接运行您自己的 SQL,您需要自己引用标识符。请参阅下面@paulsm4 的答案。
标签: java hibernate postgresql