![](/img/trans.png)
[英]org.postgresql.util.PSQLException: Error: column systementi0_.id does not exist - Hibernate, PostgreSql
[英]org.postgresql.util.PSQLException: ERROR: column "id" does not exist - Java Web Service
我正在开发一个广泛部署的 Java Web 服务。 它连接到一个 postgresql 数据库。 在这个数据库中,我有一个名为 xx_activity 的表。 其中有一个名为“id”的列,它也是主键。 这是用于创建表的查询:
CREATE TABLE xx_activity
(
id serial NOT NULL,
baseitemid integer
);
要连接到此表,我使用以下 java 代码:
conn = postgresVoyateDBConnection();
query = conn.prepareStatement("select id, baseitemid" +
"from xx_activity " +
"where \"id\" = ? ");
query.setInt(1, id);
ResultSet rs = query.executeQuery();
但是,当我调用包含此代码的方法时,出现错误:
org.postgresql.util.PSQLException:错误:列“id”不存在
职位:8
这令人困惑,因为我当然有这个专栏。 我根据这个答案添加了转义字符,但它没有解决问题。
另请注意,没有 where 子句的查询,例如:
conn = postgresVoyateDBConnection();
query = conn.prepareStatement("select id, baseitemid " +
"from xx_activity");
ResultSet rs = query.executeQuery();
完美地工作。
我也试过不使用转义字符,但它给出了同样的错误。 我还检查了 pgadmin,列名中没有尾随空格,也没有涉及任何大写字母(在这种情况下,另一个选择查询不应该起作用?)。
如何解决这个问题?
解决了这个问题,问题是缺少空间。 在查询的第一行之后,需要有一个空格,如下所示:
query = conn.prepareStatement("select id, baseitemid " +
"from xx_activity " +
"where \"id\" = ? ");
编辑: id
不需要转义字符; 所以最终答案应该是:
query = conn.prepareStatement("select id, baseitemid " +
"from xx_activity " +
"where id = ? ");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.