[ 
https://issues.apache.org/jira/browse/OPENJPA-1604?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rick Curtis updated OPENJPA-1604:
---------------------------------

    Attachment: OPENJPA-1604-trunk.patch
                OPENJPA-1604-2.0.x.patch

After digging into this problem I concur with Pinaki's assessment that the lock 
modes / lock configuration has numerous issues. I'm posting a patch that will 
only address the backward compatibility issue. 

The root issue at hand is that in JPA 1.0 a named query had a default lock mode 
of READ (by OpenJPA's definition, not the spec), but per the 2.0 spec the 
default lock mode is NONE.

Ideally when we are parsing annotations in AnnotationPersistenceMetaDataParser 
we could differentiate between a named query which has specified the lockMode 
vs a default lockMode. Since that doesn't seem to be possible, I'm proposing 
that if we detect that we're using a pessimistic lock manager and the lockMode 
is none, we will promote that lock to a READ lock.

This approach will restore backward compatibility, but will exclude one use 
case. When using a pessimistic lock manager on 2.0 you will be unable to 
configure a NamedQuery with the lockMode of NONE. 

> Setting PessimisticLockManager fails to append "for update clause" to the 
> select statement
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1604
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1604
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 2.0.0, 2.1.0
>            Reporter: Fay Wang
>            Assignee: Pinaki Poddar
>             Fix For: 2.0.0, 2.1.0
>
>         Attachments: OPENJPA-1604-2.0.x.patch, OPENJPA-1604-trunk.patch
>
>
>  I ran a testcase against openjpa 1.2, and found that the "for update" clause 
> is appended to the SQL when
>               <property name="openjpa.LockManager" value="pessimistic"/>
>       is added to the persistence.xml without calling: 
>                q.setLockMode(LockModeType.PESSIMISTIC_WRITE);
> However, this behavior changes when running against trunk level code

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to