Trình điều khiển oracle sẽ trả về số lượng hàng chính xác. Tôi sẽ ngạc nhiên nếu đây không phải là trường hợp. Bạn có thể xác nhận rằng kết quả từ trình điều khiển là chính xác không? Bạn có thể bật tính năng Ghi nhật ký ngủ đông để kiểm tra điều này.
Một số điều cần kiểm tra:
-
Ghi nhật ký SQL thực đang được gửi đến DB và kiểm tra xem cột phiên bản có được đề cập trong mệnh đề where không. Không chắc liệu các SQL có được ghi lại bằng cách ghi nhật ký Hibernate có bật lên hay không, bạn có thể phải sử dụng một cách khác để ghi các SQL sau đó (ví dụ:p6spy)
-
Nếu số lượng hàng được trả lại chính xác trong quá trình cập nhật đồng thời, thì ứng dụng đang hoạt động tốt. Xác nhận điều này bằng cách kiểm tra xem các giá trị của cột phiên bản được cập nhật đã chính xác chưa.
Cập nhật Theo liên kết sau, sự cố này đã xuất hiện với trình điều khiển Oracle cho đến 11g và được khắc phục trong phiên bản 12c
https://hibernate.atlassian.net/browse/HHH-3360
Đối với các phiên bản Oracle trước, có một số thông tin bổ sung sẽ hữu ích, tức là cung cấp giải pháp tùy chỉnh.
Tài nguyên bổ sung: https://hibernate.atlassian.net/browse/HHH-5070