0
私はpostgresとHibernateを使用しています。私は生成されたIDで何か変わったことに気付いています。Hibernateとpostgresql bigserial - 非順列
id bigserial
とnextval('my_id_seq'::regclass)
私のidカラムは、このように定義されている可能
my_id_seq
の開始値は1で、インクリメントは1で、SquirereLを使ってnextvalを呼び出すときめ細かくインクリメントします。私のHibernateのエンティティで
は、idは次のようにマップされます。id列に、このような突然のジャンプを引き起こす可能性が
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
何(一点で、それは4152から12041にジャンプしますか)?
'SERIAL' PostgreSQLの型とシーケンスはギャップを含んでいることが知られています(その世代はどのトランザクションよりも上にあるため、生成された値は決してロールバックされません)。しかし、統計的には、このような巨大なジャンプは、ロールバックされたトランザクションによって引き起こされることはありません(多くのエンティティを生成しようとする重大なバグがあっても失敗した場合に限る)。 – pozs
これはテスト環境です。定期的に実行されるプロセス。十分な不具合のある項目とそれを説明するかもしれない時間がある。チェックされたプロダクションで、それほど悪くない9716行、最大IDは43083です。とにかく、失敗した試行を別のタスクの一部として修正しました。うまくいけばギャップがなくなります。 – Tobb