I am using Websphere application server 7.0.0.0.9 with ;OpenJPA 1.2.3-SNAPSHOT’.
I have Set property of jdbc data source webSphereDefaultIsolationLevel=2 (READ COMMITTED).
I have this question because My understanding is the OptimasticLockException occurs if there is race to commit the same row by multiple thread.
But I think this situation should never occur if isolation level app server is set to READ COMMITTED.
This is exception I am getting..
<openjpa-1.2.3-SNAPSHOT-r422266:907835 fatal store error> org.apache.openjpa.persistence.OptimisticLockException: An optimistic lock violation was detected when flushing object instance
Yes, an
OptimisticLockExceptionwill be thrown if theVersionattribute of an entity is higher (i.e. has been modified by another transaction) at commit time than when it was read. This is illustrated by the figure below (borrowed from JPA 2.0 Concurrency and locking):Why? When using a READ COMMITTED isolation level, non-repeatable reads may occur but:
e1in the above example)To sum up, READ COMMITTED won’t prevent
OptimisticLockException.