Hibernate将用户模型保存到Postgres

我正在通过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,我必须在表名周围加上引号,因为用户似乎是一个postgres关键字,但我怎么能说服hibernate自己做呢?

提前致谢。

使用保留关键字时,您需要转义表名。 在JPA 1.0中,没有标准化的方法,Hibernate特定的解决方案是使用反引号:

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

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

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

参考

  • Hibernate核心文档
    • 5.4。 SQL引用的标识符
  • JPA 2.0规范
    • 2.13数据库对象的命名

用户是关键词 ,找到更好的名称或使用引号:“用户”。 (坏主意imho,但如果你到处都这样做,它会起作用)