Oracle-driveren bør returnere korrekte rækketal. Jeg vil blive overrasket, hvis dette ikke er tilfældet. Var du i stand til at bekræfte, at resultaterne fra driveren er korrekte? Du kan aktivere Hibernate-logning for at kontrollere dette.
Et par ting at tjekke:
-
Log den faktiske SQL, der sendes til DB'en, og kontroller, at versionskolonnen er nævnt i where-klausulen. Ikke sikker på, om SQL'erne er logget af Hibernate-logning med batching på, du skal muligvis ty til en anden måde at logge SQL'erne på (f.eks. p6spy)
-
Hvis rækkeantallet returneres korrekt under samtidige opdateringer, fungerer applikationen fint. Bekræft dette ved at kontrollere, at værdierne i versionskolonnen er opdateret rettet.
Opdater Ifølge det følgende link har dette problem været til stede med Oracle-driveren indtil 11g og rettet i version 12c
https://hibernate.atlassian.net/browse/HHH-3360
For tidligere Oracle-versioner er der nogle yderligere oplysninger, som burde være nyttige, dvs. en brugerdefineret løsning leveres.
Yderligere ressourcer:https://hibernate.atlassian.net/browse/HHH-5070