openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Fay Wang (JIRA)" <j...@apache.org>
Subject [jira] Created: (OPENJPA-1602) Query with lock mode set to PESSIMISTIC_WRITE does not have for update clause attached to the sql when runs twice
Date Mon, 29 Mar 2010 18:05:27 GMT
Query with lock mode set to PESSIMISTIC_WRITE does not have for update clause attached to the
sql when runs twice
-----------------------------------------------------------------------------------------------------------------

                 Key: OPENJPA-1602
                 URL: https://issues.apache.org/jira/browse/OPENJPA-1602
             Project: OpenJPA
          Issue Type: Bug
          Components: jdbc
    Affects Versions: 2.1.0
            Reporter: Fay Wang


The following test case executes query two times. 

The sql generated for the first time:
sql = SELECT t0.KEYNAME, t0.KEYVAL FROM KEYGEN t0 WHERE (t0.KEYNAME = ?)  optimize for 1 row
FOR READ ONLY WITH RR USE AND KEEP UPDATE LOCKS

The sql generated for the second time:
sql = SELECT t0.KEYNAME, t0.KEYVAL FROM KEYGEN t0 WHERE (t0.KEYNAME = ?)


   public void testKeyGen() {
        EntityManager em = emf.createEntityManager();
        KeyGenEntity key = null;
        em.getTransaction().begin();
        for (int i = 0;i < 2; i++) {
            Query q = em.createNamedQuery("getStationKeyForUpdate");
            q.setLockMode(LockModeType.PESSIMISTIC_WRITE);
            q.setParameter("keyname", keyName);
            try {
                key = (KeyGenEntity) q.getSingleResult();
                em.refresh(key);
            }
            catch (NoResultException e) {
                // No keys found for this name - create a new one
                int keyVal = 0;
                key = new KeyGenEntity(keyName, keyVal);
                em.persist(key);
                em.lock(key, LockModeType.PESSIMISTIC_WRITE);
            }

            int keyVal = key.getKeyval();
            key.setKeyval(keyVal +  1);
        }
        em.getTransaction().commit();
    }


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


Mime
View raw message