Sterownik Oracle powinien zwracać prawidłową liczbę wierszy. Zdziwię się, jeśli tak nie jest. Czy udało Ci się potwierdzić, że wyniki ze sterownika są prawidłowe? Aby to sprawdzić, możesz włączyć rejestrowanie hibernacji.
Kilka rzeczy do sprawdzenia:
-
Zarejestruj rzeczywisty kod SQL wysyłany do bazy danych i sprawdź, czy kolumna wersji jest wymieniona w klauzuli where. Nie masz pewności, czy SQL są rejestrowane przez Hibernate rejestrowanie z włączonym przetwarzaniem wsadowym, być może będziesz musiał uciec się do innego sposobu rejestrowania SQL (np. p6spy)
-
Jeśli liczniki wierszy są zwracane poprawnie podczas współbieżnych aktualizacji, oznacza to, że aplikacja działa poprawnie. Potwierdź to, sprawdzając, czy wartości w kolumnie wersji zostały zaktualizowane.
Aktualizacja Zgodnie z poniższym linkiem ten problem występował w sterowniku Oracle do 11g i został naprawiony w wersji 12c
https://hibernate.atlassian.net/browse/HHH-3360
W przypadku wcześniejszych wersji Oracle istnieją dodatkowe informacje, które powinny być przydatne, np. dostarczane jest niestandardowe rozwiązanie.
Dodatkowe zasoby:https://hibernate.atlassian.net/browse/HHH-5070