Модель спящего режима для спящего режима для Postgres
Я использую 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, но как я могу убедить спящий режим сделать это сам?
Спасибо заранее.
Ответы
Ответ 1
При использовании зарезервированных ключевых слов вам нужно избегать имени таблицы. В JPA 1.0 нет стандартизованного способа, и конкретным решением Hibernate является использование обратных ссылок:
@Entity
@Table(name="`User`")
public class User {
...
}
В JPA 2.0 стандартизованный синтаксис выглядит следующим образом:
@Entity
@Table(name="\"User\"")
public class User {
...
}
Ссылки
- Документация Hibernate Core
- Спецификация JPA 2.0
- 2.13 Именование объектов базы данных
Ответ 2
Пользователь ключевое слово, найти лучшее имя или использовать кавычки: "Пользователь". (плохая идея imho, но она работает, если вы делаете это везде)