The increment size of the [xxxx_id_seq] sequence is set to [50] in the entity mapping while the associated database sequence increment size is [1].の解決方法

発生現象

Java(Spring Boot)DBエンティティを作成した際に発生したエラーです。
起動時に発生します。

Caused by: org.hibernate.MappingException: Could not instantiate id generator [entity-name=com.example.demo.entities.TodoItem]
    at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:124) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    ---中略
Caused by: org.hibernate.MappingException: The increment size of the [xxxx_id_seq] sequence is set to [50] in the entity mapping while the associated database sequence increment size is [1].
    at org.hibernate.id.enhanced.SequenceStyleGenerator.configure(SequenceStyleGenerator.java:261) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    at org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.createIdentifierGenerator(DefaultIdentifierGeneratorFactory.java:118) ~[hibernate-core-5.4.27.Final.jar:5.4.27.Final]
    ... 38 common frames omitted

The increment size of the [xxxx_id_seq] sequence is set to [50] in the entity mapping while the associated database sequence increment size is [1].
[xxxx_id_seq]シーケンスの増分サイズはエンティティマッピングで[50]に設定され、関連するデータベースシーケンスの増分サイズは[1]です。

@SequenceGeneratorのデフォルトは50だけど、DBで設定されてるシーケンスの増分は1だよ!というエラーですね。

解決方法

1ずつ増やすように@SequenceGeneratorに増分を指定しましょう。
(50ずつ増えるってどんなデフォルトなんだろう。

import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
@Entity
@Table(name = "items")
public class Item {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "xxxx_id_seq")
    //@SequenceGenerator(name = "xxxx_id_seq", sequenceName = "todoitems_id_seq")
    @SequenceGenerator(name = "xxxx_id_seq", sequenceName = "todoitems_id_seq", allocationSize = 1) // ★allocationSize = 1を追加

    private Long id;

参考

[HHH-13674] - Hibernate JIRA

フォローお願いします!

コメント

タイトルとURLをコピーしました