Der Oracle-Treiber sollte korrekte Zeilenzahlen zurückgeben. Ich werde mich wundern, wenn dies nicht der Fall ist. Konnten Sie bestätigen, dass die Ergebnisse des Treibers korrekt sind? Sie können die Hibernate-Protokollierung aktivieren, um dies zu überprüfen.
Einige Dinge, die Sie überprüfen sollten:
-
Protokollieren Sie das tatsächliche SQL, das an die Datenbank gesendet wird, und überprüfen Sie, ob die Versionsspalte in der where-Klausel erwähnt wird. Sie sind sich nicht sicher, ob die SQLs von der Hibernate-Protokollierung mit Batching protokolliert werden, Sie müssen dann möglicherweise auf eine andere Art der Protokollierung der SQLs zurückgreifen (z. B. p6spy)
-
Wenn die Zeilenanzahl während gleichzeitiger Aktualisierungen korrekt zurückgegeben wird, funktioniert die Anwendung einwandfrei. Bestätigen Sie dies, indem Sie prüfen, ob die Werte der Versionsspalte aktualisiert und korrigiert wurden.
Aktualisieren Laut folgendem Link war dieses Problem beim Oracle-Treiber bis 11g vorhanden und wurde in Version 12c behoben
https://hibernate.atlassian.net/browse/HHH-3360
Für frühere Oracle-Versionen gibt es einige zusätzliche Informationen, die nützlich sein sollten, d. h. es wird eine benutzerdefinierte Lösung bereitgestellt.
Zusätzliche Ressourcen:https://hibernate.atlassian.net/browse/HHH-5070