Điều nói đến giá trị đầu tiên là 1 thay vì 1001, đó là lỗi Hibernate HHH-4228 , với trạng thái Sẽ không khắc phục được . Giá trị đầu tiên đúng trong trường hợp của bạn là 1001 thay vì 1000, vì initialValue
khởi tạo cột lưu trữ cuối cùng giá trị được trả về (và không phải là giá trị tiếp theo được trả về).
Sử dụng sau trong Persence.xml (cũng như được đề xuất trong báo cáo lỗi) sẽ khắc phục sự cố với giá trị đầu tiên:
<property name="hibernate.id.new_generator_mappings" value="true"/>
Ý nghĩa của allocationSize
có thể bị hiểu nhầm trong câu hỏi. Nó không phải là bước để tăng dần. Nó có nghĩa là có bao nhiêu giá trị được cấp phát với một truy vấn cơ sở dữ liệu từ bảng. Đây là cách tối ưu hóa hơn để tránh truy vấn bổ sung mỗi khi cần giá trị id cho thực thể mới.
Sản phẩm phụ là việc khởi động lại ứng dụng thường gây ra các lỗ hổng cho trình tự:
- ban đầuValue =1000, phân bổSize =100
- Sử dụng giá trị 1001 (=> giá trị trong valueColumn được cập nhật thành 1100).
- tắt và khởi động ứng dụng
- giá trị tiếp theo sẽ là 1101, không phải 1002.