gpt4 book ai didi

java - org.postgresql.util.PSQLException : ERROR: column user0_. id 不存在 - hibernate

转载 作者:IT老高 更新时间:2023-10-28 20:46:12 27 4
gpt4 key购买 nike

我有一个使用 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();

我得到一个异常(exception):

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

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

database

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

最佳答案

解决方案

PostgreSQL 中,您必须像这样指定架构的名称:

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

长篇大论

你遇到了这个错误:

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

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


良好做法

  1. databaseschematablescolumns的名称中不要使用大写字母<强>PostgreSQL。否则,您应该使用引号转义此名称,这可能会导致语法错误,因此您可以使用:

@Table(name="table_name", schema = "schema_name")
^^^^^^^^^^ ^^^^^^^^^^^
  1. 关键字USERPostgreSQL中的保留关键字take a look at

+----------+-----------+----------+-----------+---------+
| Key Word |PostgreSQL |SQL:2003 | SQL:1999 | SQL-92 |
+----------+-----------+----------+-----------+---------+
| .... .... .... .... .... |
+----------+-----------+----------+-----------+---------+
| USER | reserved |reserved | reserved | reserved|
+----------+-----------+----------+-----------+---------+
  1. DtoEntity 之间的区别是在您的实体名称末尾使用实体,例如 UserEntity<

关于java - org.postgresql.util.PSQLException : ERROR: column user0_. id 不存在 - hibernate ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45782327/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com