#postgresql #hibernate #jpa
#postgresql #спящий режим #jpa
Вопрос:
Я использую JPA / Hibernate и postgres в качестве своей базы данных
Я создал последовательность в postgres следующим образом:
CREATE SEQUENCE player_sequence
INCREMENT 20
START 1;
Я хочу, чтобы Hibernate использовал указанную выше последовательность для первичного ключа.
Идентификационная часть объекта является:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "player_seq")
@SequenceGenerator(name = "player_seq", sequenceName = "player_sequence", allocationSize = 20)
private Integer id;
Когда я создаю новый проигрыватель и пытаюсь сохранить его с помощью EntityManger.persist
метода, я получаю следующую ошибку:
Гибернация: выберите next_val как id_val из player_sequence для обновления org.hibernate.id.enhanced.ОШИБКА выполнения структуры таблицы $1 $1: не удалось прочитать значение hi org.postgresql.util.Исключение PSQLException: ОШИБКА: столбец «next_val» не существует
Я не понимаю, что я делаю не так
Редактировать:
Вот содержимое persistence.xml:
Комментарии:
1. Не могли бы вы, пожалуйста, показать свою конфигурацию hibernate. Какую версию гибернации вы используете?
2. Я добавил persistence.xml содержимое файла, о котором шла речь выше
Ответ №1:
Попробуйте исправить это persistence.xml
таким образом:
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd"
version="2.2">
<persistence-unit name="my-persistence-unit">
<description>...</description>
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<!-- It was wrong !!! -->
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL10Dialect" />
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/basketball" />
<property name="javax.persistence.jdbc.user" value="postgres" />
<property name="javax.persistence.jdbc.password" value="1234" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>