Спящий режим сохранения пользовательской модели в Postgres - PullRequest
18 голосов
/ 31 августа 2010

Я использую Postgres через Hibernate (аннотации), но похоже, что он падает при работе с объектом 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 сделать это самому?

Заранее спасибо.

Ответы [ 2 ]

38 голосов
/ 31 августа 2010

Вам нужно экранировать имя таблицы при использовании зарезервированных ключевых слов.В JPA 1.0 нет стандартизированного способа, и специальное решение Hibernate заключается в использовании обратных галочек:

@Entity
@Table(name="`User`")
public class User {
    ...
}

В JPA 2.0 стандартизированный синтаксис выглядит следующим образом:

@Entity
@Table(name="\"User\"")
public class User {
    ...
}

Ссылки

3 голосов
/ 31 августа 2010

Пользователь - ключевое слово , найдите более подходящее имя или используйте кавычки: "Пользователь". (плохая идея imho, но она работает, если вы делаете это везде )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...