После миграции в Hibernate 5.2.7 я, кажется, получаю неправильные значения для поля id.hibernate 5 sequencegenerator не дает правильного значения
Мой код:
@Id @SearchableId
@GeneratedValue(strategy=GenerationType.AUTO, generator="hms_seq_gen")
@SequenceGenerator(name="hms_seq_gen", sequenceName="patregn_seq")
protected Integer ID;
Hibernate пожары этот запрос:
select nextval ('patregn_seq')
который дает 5367. последнее значение в поле идентификатора в таблице 5358.
И я получаю это
ERROR: duplicate key value violates unique constraint "patientregistration_pkey" [java] Detail: Key (id)=(5318) already exists.
Я уверен, что этот вопрос похож на this и this, но я вынужден спросить, потому что решение, данное там не работает для меня:
Я добавил
<property value="true" name="hibernate.id.new_generator_mappings"/>
к моему persistence.xml, но нет. Любая помощь будет принята с благодарностью.
Спасибо за ваше предложение. Оно работает. Но сейчас я немного смущен. Согласно комментарию Стива Эберсоле по адресу http://stackoverflow.com/questions/12737092/is-there-a-way-to-dynamically-choose-a-generatedvalue-strategy-using-jpa-annota, он должен быть установлен в true чтобы описать поведение - вот что мне казалось нужным. Кроме того, когда я устанавливаю свойство в false, я получаю предупреждение: «Нашел использование устаревшего генератора id на основе устаревших [org.hibernate.id.SequenceGenerator]; Вместо этого используйте org.hibernate.id.enhanced.SequenceStyleGenerator. 'Это, даже когда я использую JPA SequenceGenerator –
Да, Томас генерирует предупреждение. Из Руководства пользователя - «Существующие приложения могут отключить это (установить значение false) для совместимости обновлений с 3.x и 4.x до 5.x." Фактически при запуске разработки приложения должно быть установлено значение true, но для устаревания - вы должны его отключить, иначе ваше приложение завершится ошибкой. – idmitriev