Apa yang datang ke nilai pertama adalah 1 bukannya 1001 yaitu Hibernate bug HHH-4228 , dengan status Tidak akan diperbaiki . Nilai pertama yang benar dalam kasus Anda adalah 1001 bukannya 1000, karena initialValue
menginisialisasi kolom yang menyimpan terakhir nilai yang dikembalikan (dan bukan nilai berikutnya yang akan dikembalikan).
Menggunakan mengikuti di ketekunan.xml (seperti yang juga disarankan dalam laporan bug) akan memperbaiki masalah dengan nilai pertama:
<property name="hibernate.id.new_generator_mappings" value="true"/>
Arti allocationSize
kemungkinan disalahpahami dalam pertanyaan. Itu bukan langkah untuk meningkat. Ini berarti berapa banyak nilai yang dialokasikan dengan satu kueri database dari tabel. Ini lebih merupakan pengoptimalan untuk menghindari kueri tambahan setiap kali nilai id diperlukan untuk entitas baru.
Produk sampingannya adalah restart aplikasi sering menyebabkan lubang pada urutan:
- initialValue =1000,allocationSize =100
- Gunakan nilai 1001 (=> nilai dalam valueColumn diperbarui ke 1100).
- matikan dan mulai aplikasi
- nilai berikutnya adalah 1101, bukan 1002.