Драйверът на Oracle трябва да върне правилния брой редове. Ще се изненадам, ако това не е така. Успяхте ли да потвърдите, че резултатите от драйвера са правилни? Можете да включите регистрирането на хибернация, за да проверите това.
Няколко неща, които трябва да проверите:
-
Регистрирайте действителния SQL, който се изпраща към DB, и проверете дали колоната за версия е спомената в клаузата where. Не сте сигурни дали SQL-ите се регистрират от Hibernate logging с включено групиране, тогава може да се наложи да прибегнете до различен начин за регистриране на SQL-овете (напр. p6spy)
-
Ако броят на редовете се връща правилно по време на едновременни актуализации, тогава приложението работи добре. Потвърдете това, като проверите дали стойностите на колоната за версия са актуализирани коригирани.
Актуализация Според следната връзка този проблем е присъствал в драйвера на Oracle до 11g и е коригиран във версия 12c
https://hibernate.atlassian.net/browse/HHH-3360
За предишни версии на Oracle има допълнителна информация, която би трябвало да е полезна, т.е. предоставено е персонализирано решение.
Допълнителни ресурси:https://hibernate.atlassian.net/browse/HHH-5070