Wie wird die pessimistische Sperre mit der Kriterien-API angegeben?

9

Ich lade mithilfe der Kriterien-API eine Liste von Objekten im Ruhezustand ab. Allerdings brauche ich eine Sperre für diese Objekte, da ein anderer Thread, der zur gleichen Zeit ausgeführt wird, die genauen Objekte erhält und nur einer der Threads in Abwesenheit einer pessimistischen Sperre erfolgreich ist.

Ich habe versucht wie unten, aber es funktioniert nicht.

%Vor%

Update : Ich führe ein Update nach dieser Anweisung durch, damit beide Threads unterschiedliche Zeilen lesen sollen oder zumindest der zweite Thread warten sollte, bis der erste Thread mit der Transaktion fertig ist und die Sperre verlässt .

Und die Hibernate generierte Abfrage ist unten.

%Vor%

Update : Es scheint ein Fehler in der Version 3.5.2, wie Pascal Thivent (Vielen Dank Pascal) erwähnt, ich bin als Mitglied beigetreten und habe das Problem beobachtet. Hoffentlich wird es in der nächsten Version enthalten sein.

Allerdings habe ich versucht, hier einen anderen Ansatz mit session.buildLockRequest() ... zu verwenden, aber ich konnte nicht richtig herausfinden, wie man es benutzt und die Verwendung von unterem Code hat keinerlei Wirkung.

%Vor%     
Reddy 12.06.2010, 11:24
quelle

1 Antwort

3

Welche Version von Hibernate verwenden Sie? Könnte das HHH-5275 sein? Sind Sie sicher, dass die FOR UPDATE -Anweisung nicht generiert wurde? Können Sie das generierte SQL anzeigen?

    
Pascal Thivent 12.06.2010, 12:11
quelle

Tags und Links