休眠将用户模型保存到 Postgres

2022-09-02 00:17:24

我正在通过Hibernate(注释)使用Postgres,但它似乎正在处理User对象:

12:09:16,442 ERROR [SchemaExport] Unsuccessful: create table User (id  bigserial not null, password varchar(255), username varchar(255), primary key (id))
12:09:16,442 ERROR [SchemaExport] ERROR: syntax error at or near "User"

如果我手动运行SQL,我必须在表名两边加上引号,因为user似乎是一个postgres关键字,但是我怎么能说服hibernate自己做这件事呢?

提前致谢。


答案 1

使用保留关键字时,需要转义表名。在 JPA 1.0 中,没有标准化的方法,休眠特定的解决方案是使用反向滴答声:

@Entity
@Table(name="`User`")
public class User {
    ...
}

在 JPA 2.0 中,标准化语法如下所示:

@Entity
@Table(name="\"User\"")
public class User {
    ...
}

引用


答案 2

用户是一个关键词,找到一个更好的名字或使用引号:“用户”。(恕我直言,这是个好主意,但如果你到处都这样做,它有效)


推荐