Parece que PostgreSQL no permite crear una tabla de base de datos llamada 'usuario'. Pero MySQL permitirá crear dicha tabla.
¿Es eso porque es una palabra clave? Pero Hibernate no puede identificar ningún problema (incluso si configuramos PostgreSQLDialect).
Respuestas:
user
es una palabra reservada y generalmente no es una buena idea usar palabras reservadas para identificadores (tablas, columnas).Si insiste en hacer eso, debe poner el nombre de la tabla entre comillas dobles:
create table "user" (...);
Pero siempre es necesario utilizar comillas dobles al hacer referencia a la tabla. Además, el nombre de la tabla distingue entre mayúsculas y minúsculas.
"user"
es un nombre de tabla diferente al"User"
.Si quiere ahorrarse muchos problemas, utilice un nombre diferente.
users
,,user_account
...Se pueden encontrar más detalles sobre los identificadores entre comillas en el manual: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
fuente
Es posible especificar el nombre de la tabla con JPA con la siguiente sintaxis:
fuente
column user0_.id does not exist
Tuvimos el mismo problema hace un tiempo y simplemente cambiamos el nombre de la tabla de
user
aapp_user
. Debido al uso de Hibernate / JPA. Pensamos que sería más fácil de esta manera. Espero que esta pequeña solución ayude a alguien más.fuente
Se puede crear una tabla
user
en el esquema que no seapublic
. El ejemplo:CREATE SCHEMA my_schema; CREATE TABLE my_schema.user(...);
fuente