Похоже, PostgreSQL не позволяет создавать таблицу базы данных с именем «пользователь». Но MySQL позволит создать такую таблицу.
Это потому, что это ключевое слово? Но Hibernate не может определить какую-либо проблему (даже если мы установили PostgreSQLDialect).
Ответы:
user
является зарезервированным словом, и обычно не рекомендуется использовать зарезервированные слова для идентификаторов (таблиц, столбцов).Если вы настаиваете на этом, вы должны заключить имя таблицы в двойные кавычки:
create table "user" (...);
Но тогда вам всегда нужно использовать двойные кавычки при обращении к таблице. Кроме того, имя таблицы чувствительно к регистру.
"user"
это другое имя таблицы, чем"User"
.Если вы хотите избавить себя от множества проблем, используйте другое имя.
users
,user_account
...Более подробную информацию о цитируемых идентификаторах можно найти в руководстве: http://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS
источник
Можно указать имя таблицы с помощью JPA со следующим синтаксисом:
источник
column user0_.id does not exist
У нас была такая же проблема некоторое время назад, и мы просто изменили имя таблицы с
user
наapp_user
. Из-за использования Hibernate / JPA. Мы думали, так будет проще. Надеюсь, это небольшое исправление поможет кому-то другому.источник
Можно создать таблицу
user
в схеме, отличной отpublic
. Пример:CREATE SCHEMA my_schema; CREATE TABLE my_schema.user(...);
источник