HerbinetエンティティークラスEntityプライマリ・キーIDは、Oracleの自己増分シーケンスallocationSizeプロパティをサポートするピットを実装します.


シーン:Hibernetエンティティークラスは、Oracleデータベースのプライマリ・キーの自己増加コードをサポートします.
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "***_SEQ")
    @SequenceGenerator(name = "****_SEQ", sequenceName = "***_SEQ")
    public Long getId() {
        return this.id;
    }

ここではシーケンス名のみが指定されていますが、@SequenceGeneratorではallocationSizeプロパティが少なくなっています.このコメントに関する2つのプロパティ:initialValueプロパティ:シーケンスの開始値.
AllocationSizeプロパティ:増加するたびの増加量、デフォルトは50です.Oracleシーケンステーブルのステップ長と一致する必要があります
allocationSize属性を設定しないと、問題となるのは、クライアントごとにレコードを追加する場合、採用する自増IDはすべてローカルキャッシュを採用したレコードを基準に自増を実現します.例えば、Aクライアントの新規レコードIDは100101102で、次回Aクライアントが追加すると、103からBクライアントの新規レコードIDは103104105で、次回Bクライアントが追加します.106から始まる
一方、Aクライアントが次に追加する場合、次の値はAクライアントがローカルにキャッシュした102のベース+1であり、データベースの最大IDに準ずるものではない103であるため、Aクライアントが再び記録を追加すると103が追加されるが、103はすでにBクライアントに追加され、一意の約束インデックスに違反する.
正しいID構成注記の書き方:
@Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "***_SEQ")
    @SequenceGenerator(name = "***_SEQ", sequenceName = "***_SEQ",allocationSize =1)
    public Long getId() {
        return this.id;
    }