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,但如果你到处都这样做,它会起作用)