似乎PostgreSQL不允许创建名为“user”的数据库表。但MySQL将允许创建这样的表。
这是因为它是关键词吗?但是Hibernate无法识别任何问题(即使我们设置了PostgreSQLDialect)。答案 0 :(得分:98)
user
是一个保留字,对于标识符(表,列)使用保留字通常不是一个好主意。
如果你坚持这样做,你必须把表名放在双引号中:
create table "user" (...);
但是,总是在引用表时需要使用双引号。此外,表名称区分大小写。 "user"
是与"User"
不同的表名。
如果你想节省很多麻烦,请使用其他名称。 users
,user_account
,...
有关引用标识符的更多详细信息,请参阅手册:http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
答案 1 :(得分:8)
可以使用JPA指定带有下一语法的tablename:
@Table(name="\"user\"")
答案 2 :(得分:2)
我们之前也有同样的问题,只是将表名从user
更改为app_user
。由于使用了Hibernate / JPA。我们认为这样会更容易。
希望此小技巧可以对其他人有所帮助。
答案 3 :(得分:1)
一个人可以在cache_classes
之外的模式中创建表user
。
示例:
public