Wie die Freigabe einer gesperrten Zeile mit JPA?
Ich bin mit der EclipseLink-Implementierung von JPA 2.0 ermöglicht die pessimistische sperren. Ich weiß, wie ich Schloss eine Einheit, sondern wie kann ich die Sperre lösen? Zuerst dachte ich, dies war alles erledigt innerhalb einer Transaktion (in anderen Worten, die Entität gesperrt ist, bis Sie einen commit für die Transaktion), aber das scheint nicht der Fall zu sein.
Habe ich versucht, eine schnelle google-Suche (scheint so, das sollte ziemlich offensichtlich), aber ich habe nicht nichts gefunden...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach ein paar Stunden Schlaf... und das tun einige Tests durchführen in den morgen, ich glaube, ich habe herausgefunden, mein problem. So die Sperre ist eigentlich gesorgt, die innerhalb einer Transaktion. Allerdings wenn ich den Test meinen code, ich war in der Lage, abrufen eine gesperrte Zeile mit dem EntityManager.finden(Class key) - Methode (kein locking-Strategie angegeben). Ich irrtümlicherweise dachte, dass, indem Sie eine Sperre für eine Zeile, wird die Zeile nicht gelesen werden konnte. Zeitraum. Aber, ich Las die JPA Definitionen von PESSIMISTIC_READ und PESSIMISTIC_WRITE und festgestellt, dass mein problem:
Die Sperre nicht unbedingt verhindern, dass alle liest, es einfach verhindert, dass andere Transaktionen setzen einer LESE-oder Schreibsperre für die Zeile.