Il driver Oracle dovrebbe restituire il conteggio delle righe corretto. Sarei sorpreso se non fosse così. Sei riuscito a confermare che i risultati del driver sono corretti? Puoi attivare la registrazione in sospensione per verificarlo.
Un paio di cose da controllare:
-
Registrare l'SQL effettivo inviato al DB e verificare che la colonna della versione sia menzionata nella clausola where. Non sono sicuro che gli SQL siano registrati da Hibernate con la registrazione in batch, potresti dover ricorrere a un modo diverso di registrare gli SQL (ad esempio, p6spy)
-
Se i conteggi delle righe vengono restituiti correttamente durante gli aggiornamenti simultanei, l'applicazione funziona correttamente. Confermalo controllando che i valori della colonna versione siano aggiornati corretti.
Aggiorna Secondo il seguente link, questo problema era presente con il driver Oracle fino all'11g e risolto nella versione 12c
https://hibernate.atlassian.net/browse/HHH-3360
Per le versioni precedenti di Oracle sono disponibili alcune informazioni aggiuntive che dovrebbero essere utili, ad esempio viene fornita una soluzione personalizzata.
Risorse aggiuntive:https://hibernate.atlassian.net/browse/HHH-5070