sql >> Databáze >  >> RDS >> Oracle

Hibernate ukládá zastaralá data pomocí hibernate.jdbc.batch_versioned_data

Ovladač Oracle by měl vrátit správný počet řádků. Nechám se překvapit, jestli tomu tak není. Podařilo se vám potvrdit, že výsledky z ovladače jsou správné? Chcete-li to zkontrolovat, můžete zapnout protokolování Hibernate.

Pár věcí ke kontrole:

  1. Zaznamenejte skutečný SQL odesílaný do DB a zkontrolujte, zda je sloupec verze uveden v klauzuli where. Nejste si jisti, zda jsou SQL protokolovány protokolováním Hibernate se zapnutým dávkováním, možná budete muset uchýlit se k jinému způsobu protokolování SQL než (např. p6spy)

  2. Pokud se počty řádků během souběžných aktualizací vracejí správně, pak aplikace funguje správně. Potvrďte to kontrolou, zda jsou hodnoty ve sloupci verze aktualizovány a opraveny.

Aktualizovat Podle následujícího odkazu byl tento problém přítomen u ovladače Oracle do verze 11g a opraven ve verzi 12c

https://hibernate.atlassian.net/browse/HHH-3360

Pro předchozí verze Oracle existují některé další informace, které by měly být užitečné, tj. je poskytnuto vlastní řešení.

Další zdroje:https://hibernate.atlassian.net/browse/HHH-5070




  1. Nastavte připojení PDO bez hesla

  2. rychlý výběr náhodného řádku z velké tabulky v mysql

  3. Jak zvýšit délku řetězce v mysql při mapování pomocí JPA

  4. Specifický modul nebyl nalezen. Výjimka z HRESULT:0x8007007E