Генератор последовательностей при миграции из Hibernate 4.1.2 в Hibernate 5.2.17 - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь перенести приложение на новую версию всех фреймворков. Но при переносе Hibernate с версии 4.1.2 на версию 5.2.17 я столкнулся с некоторым странным поведением (я также использую Oracle 12).

Определение идентификатора следующее:

@Id
@SequenceGenerator(name = "LOCATION_ID_GENERATOR", sequenceName = "SEQ_LOCATION")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "LOCATION_ID_GENERATOR")
@Column(unique = true, nullable = false, precision = EntityColumnDefinitions.PRECISION_19)
private Long id;

Я видел, что в этом коде используется не предоставленная последовательность, а какой-то сгенерированный Hibernate идентификатор последовательности. По этой причине последовательность в базе данных не синхронизирована с идентификатором. Я мог бы исправить это, добавив «allocSize = 1, initialValue = 1» к определению идентификатора и создав PL-SQL-скрипт для обновления последовательности и синхронизации с идентификатором.

@Id
@SequenceGenerator(name = "LOCATION_ID_GENERATOR", sequenceName = "SEQ_LOCATION", allocationSize = 1, initialValue= 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "LOCATION_ID_GENERATOR")
@Column(unique = true, nullable = false, precision = EntityColumnDefinitions.PRECISION_19)
private Long id;

Мой вопрос - возможно ли использовать тот же механизм, что и в версии 4.1.2? Я имею в виду, что представляет собой аннотация идентификатора для использования идентичного идентификатора последовательности, сгенерированного Hibernate, на основе последнего идентификатора в базе данных?

1 Ответ

0 голосов
/ 01 февраля 2019

Я думаю, что этот параметр в файле persistence.xml поможет:

<property name="hibernate.id.new_generator_mappings" value="false" />

Может быть, это сэкономит время кому-то еще.

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