У меня есть следующий код:
@Entity
@Table(name = "my_table", schema = "my_schema")
@SequenceGenerator(name = "my_table_id_seq", sequenceName = "my_table_id_seq",
schema = "my_schema")
public class MyClass {
@Id
@GeneratedValue(generator = "my_table_id_seq",
strategy = GenerationType.SEQUENCE)
private int id;
}
База данных: Postgresql 8.4, Будьте в спящем режиме аннотации, С 3.5.0 финалом.
При сохранении объекта MyClass это генерирует следующий SQL-запрос:
select nextval('my_table_id_seq')
Таким образом, нет никакого префикса схемы, и поэтому последовательность не может быть найдена. Когда я пишу sequenceName как
sequenceName = "my_schema.my_table_id_seq"
все работает.
У меня есть недоразумения для значения параметра схемы, или действительно ли это - ошибка? Какие-либо идеи, как сделать работу параметра схемы?
Это похоже на ошибку: провайдер JPA должен соблюдать "новые" (с Java Persistence 2.0) schema
и catalog
атрибуты @SequenceGenerator
аннотации. Предлагаю поднять вопрос на Jira (проекты аннотаций и менеджера сущностей теперь относятся к core), не смог найти ни одного существующего.
Хммм, я мало работаю с внутренними компонентами гибернации, но здесь есть некоторая информация:
https: //forum.hibernate .org / viewtopic.php? p = 2406761
Вы также можете установить схему по умолчанию для пользователя, подключающегося к PostgreSQL через ALTER USER ... SET SEARCH_PATH