[ https://issues.apache.org/jira/browse/OPENJPA-1602?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Donald Woods resolved OPENJPA-1602. ----------------------------------- Resolution: Fixed > 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.0.0 > Reporter: Fay Wang > Assignee: Pinaki Poddar > Priority: Critical > Fix For: 2.0.0 > > > 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.