Parece que o PostgreSQL não permite a criação de uma tabela de banco de dados chamada 'usuário'. Mas o MySQL permitirá a criação de tal tabela.
É porque é uma palavra-chave? Mas o Hibernate não consegue identificar nenhum problema (mesmo se definirmos o PostgreSQLDialect).
Respostas:
user
é uma palavra reservada e geralmente não é uma boa ideia usar palavras reservadas para identificadores (tabelas, colunas).Se você insiste em fazer isso, você deve colocar o nome da mesa entre aspas duplas:
create table "user" (...);
Mas então você sempre precisa usar aspas duplas ao fazer referência à tabela. Além disso, o nome da tabela diferencia maiúsculas de minúsculas.
"user"
é um nome de tabela diferente de"User"
.Se você quiser evitar muitos problemas, use um nome diferente.
users
,,user_account
...Mais detalhes sobre os identificadores citados podem ser encontrados no manual: http://www.postgresql.org/docs/current/static/sql-syntax Budapical.html#SQL-SYNTAX-IDENTIFIERS
fonte
É possível especificar tablename com JPA com a próxima sintaxe:
fonte
column user0_.id does not exist
Tivemos o mesmo problema há algum tempo e acabamos de alterar o nome da tabela de
user
paraapp_user
. Devido ao uso de Hibernate / JPA. Achamos que seria mais fácil assim. Espero que esta pequena correção ajude outra pessoa.fonte
Pode-se criar uma tabela
user
no esquema diferente depublic
. O exemplo:CREATE SCHEMA my_schema; CREATE TABLE my_schema.user(...);
fonte