web-dev-qa-db-ja.com

hibernate5シーケンスジェネレーターが正しい値を与えていない

Hibernate 5.2.7に移行した後、idフィールドの値が正しくないようです。

私のコード:

_@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になります。テーブルのidフィールドの最後の値は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に、しかし役に立たない。どんな助けでも大歓迎です。

9
Thomas Abraham

実際、新しいHibernateバージョン5.2.7に移行すると、hibernate.id.new_generator_mappingsはデフォルトでtrueになります。

下位互換性のために、このフラグをfalseに変更する必要があります。

詳細については、ユーザーガイドでnew_generator_mappingsを検索してください: http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html

17
idmitriev