org.postgresql.util.PSQLException:错误:列 user0_.id 不存在 - Hibernate

2023-12-22

我有一个使用 hibernate 映射到 postgres 数据库的模型类。我的模型类是:

@Entity
@Table(name="USER")
public class User {

    @Id 
    @GeneratedValue
    @Column(name="id")
    private long id;

    @Column(name="username", unique=true)
    private String username;

    @Column(name="email")
    private String email;

    @Column(name="created")
    private Timestamp created;

    public User(long id, String username, String email) {
        this.id = id;
        this.username = username;
        this.email = email;
    }
}

我尝试使用以下查询检索用户名“adam”的用户:

tx = session.beginTransaction();
TypedQuery<User> query = session.createQuery("FROM User u WHERE u.username = :username", User.class).setParameter("username", "adam");
user = query.getSingleResult();

我收到一个例外:

org.postgresql.util.PSQLException: ERROR: column user0_.id does not exist

我的 bash shell 数据库如下所示:

hibernate如何将类属性映射到表列?是否匹配基于@Column(name="username")仅或者它还尝试根据数据类型和约束(例如唯一/自动增量)进行匹配?


Solution

In PostgreSQL您必须像这样指定模式名称:

@Table(name="table_name", schema = "myapp")
                          ^^^^^^^^^^^^^^^^

很长的故事

你得到这个错误:

org.postgresql.util.PSQLException: ERROR: column user0_.id does not exist

因为当你创建数据库时PostgreSQL,它创建一个名为的默认模式public,所以当你没有在中指定名称时Entity然后 Hibernate 会自动检查public schema.


良好做法

  1. 名称中请勿使用大写字母database, schema, tables or columns in PostgreSQL。否则,您应该用引号转义此名称,这可能会导致语法错误,因此您可以使用:
@Table(name="table_name", schema = "schema_name")
             ^^^^^^^^^^             ^^^^^^^^^^^
  1. 关键字USER是保留关键字PostgreSQL 看一眼 https://www.postgresql.org/docs/8.1/static/sql-keywords-appendix.html
+----------+-----------+----------+-----------+---------+
| Key Word |PostgreSQL |SQL:2003  | SQL:1999  | SQL-92  |
+----------+-----------+----------+-----------+---------+
|  ....        ....       ....       ....       ....    |
+----------+-----------+----------+-----------+---------+
| USER     |  reserved |reserved  | reserved  | reserved|
+----------+-----------+----------+-----------+---------+
  1. 之间的差异Dto and Entity例如,在实体名称末尾使用 Entity 是一种很好的做法UserEntity
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

org.postgresql.util.PSQLException:错误:列 user0_.id 不存在 - Hibernate 的相关文章

随机推荐

  • 在 Jade 中保留换行符

    每当我渲染 JADE 模板时 我都会在一行中获取所有 HTML 这使得在查看源代码模式下阅读变得困难 我如何告诉 JADE 创建正确缩进的 HTML 这是我的模板 application p docs a href docs index h
  • HttpContext 标头

    我创建了这个类来从请求中获取标头值 public class AuthenticationHeader private static IHttpContextAccessor httpContextAccessor public Authe
  • Parse REST API 密钥在哪里?

    我正在按照本指南连接到 Flask 应用程序中的 Parse 服务器 https parseplatform github io docs rest guide https parseplatform github io docs rest
  • 使用列表理解调用函数列表

    我可以调用函数列表并使用列表理解吗 def func1 return 1 def func2 return 2 def func3 return 3 fl func1 func2 func3 fl 0 fl 1 fl 2 我知道我能做到 f
  • DBI SQL Server ODBC 连接中返回的数据库对象缺少字母

    不幸的是 如果不将机密信用信息共享到我遇到问题的数据库 我将无法为该问题创建良好的重现 希望下面有足够的信息来标记 ODBC 专家能够理解的任何明显问题 背景 我正在运行具有以下规格的 MacBook Pro Model Name MacB
  • 具有特定长度的 React.PropTypes 数组

    是否可以使用React PropTypes强制数组的长度 这是一个非常简单的案例 const TWO NUMBERS PropTypes array i need this to be an array of two numbers 我知道
  • 使用 Scala 的 Neo4j OGM 示例

    我尝试了 Luanne 文章中提到的例子Spring Data Neo4j 4 的本质 https www airpair com neo4j posts the essence of spring data neo4j 4在斯卡拉 该代码
  • Eclipse WTP / m2eclipse - 既不能清理也不能发布到 tomcat

    我正在 Ubuntu 11 10 64 位上的 Eclipse Indigo Java EE 大量使用 m2eclipse 中开发一个相当复杂的项目 Java Spring Maven 多模块 并带有 WAR 覆盖 直到今天早上一切都很好
  • Java哈希表具有单独的链接冲突解决方案?

    我已经使用内置的 java util hashtable 创建了一个程序 但现在我需要使用单独的链接来解决冲突 哈希表的这种实现是否可能 是否已经实现了使用单独链接的方法 看着source http www javakey net sour
  • Xcode 9.x 行复制和删除

    直到 Xcode 8 0 为止 都可以自定义 IDETextKeyBindingSet plist 文件 然而 现在看来修改此文件会导致 Xcode 停止正常运行 例如箭头键停止工作 并且似乎不再可能创建自己的快捷键 Xcode 从来没有行
  • 在 iOS 逻辑测试中使用 CocoaPods 时找不到库

    我正在尝试针对项目中的类编写一些 iOS 逻辑测试 这些类使用 podspec 中某些库的功能 我正在使用 Xcode 中提供的标准单元测试包 尽管不是应用程序测试 只是单元测试 例如 我使用 Magical Record 并且在我的 po
  • iPhone:将imageView设置在图像的透明部分

    我正在制作一个应用程序 其中用户将被允许首先选择一个相框 然后他 她必须从图库中为该相框选择 2 张照片 相框是一个包含两个透明孔的图像 其中我们有设置所选照片 他 她可以根据它们裁剪这些图像 在他 她完成裁剪后 将使用所选相框打开一个新视
  • 多线程编程C++[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • gcc 是否使用 Intel 的 SSE 4.2 指令进行文本处理(如果可用)?

    I read here https ieeexplore ieee org document 5762731英特尔推出的SSE 4 2 instructions用于加速字符串处理 引用文章中的内容 SSE 4 2指令集首先在Intel的Co
  • 在 Oracle 11g 中创建触发器时出现问题

    我在尝试使用 SQL Developer 在 Oracle 11g 数据库中创建触发器时遇到奇怪的错误 这是我所做的 我的桌子 CREATE TABLE COUNTRY CODE ID NUMBER 19 0 PRIMARY KEY NOT
  • 使用 FB Graph API 为特定页面创建 Facebook 事件

    我需要将 CMS 中的事件同步到 Facebook 特定页面 我正在尝试为我创建的页面创建一个事件 但仍然没有结果 我可以简单地创建与用户相关的事件 但与页面无关 代码使用Facebook PHP SDK http github com f
  • 当用户开始在 UITableView 上滚动时使用 alpha 隐藏 UIView?

    viewController由2个主要视图组成 容器视图和表视图 容器视图位于顶部 包含所有标签 例如日期和分数 我希望当用户开始滚动表视图的日期时隐藏此容器视图 到目前为止我有 连接了一个IBOutlet对于这个容器视图 这样我就可以在代
  • Django管理站点自定义search_fields查询

    在 django 管理中 您可以设置 ModelAdmin 的 search fields 以便能够搜索那里给出的属性 我的模型类有一个不是真正模型属性的属性 这意味着它不在数据库表中 该属性与另一个数据库表相关 该数据库表未通过关系与当前
  • ASP.NET 隐藏字段在回发后不更新

    我的 ASP 页面上有一些代码 如下所示
  • org.postgresql.util.PSQLException:错误:列 user0_.id 不存在 - Hibernate

    我有一个使用 hibernate 映射到 postgres 数据库的模型类 我的模型类是 Entity Table name USER public class User Id GeneratedValue Column name id p