Author: curtisr7
Date: Wed Apr 21 19:18:14 2010
New Revision: 936453
URL: http://svn.apache.org/viewvc?rev=936453&view=rev
Log:
OPENJPA-1638: Add new testcase.
Modified:
openjpa/branches/2.0.x/ (props changed)
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
Propchange: openjpa/branches/2.0.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Apr 21 19:18:14 2010
@@ -1,2 +1,2 @@
/openjpa/branches/1.0.x:736493
-/openjpa/trunk:934507,935033,935035,935073-935074,936436
+/openjpa/trunk:934507,935033,935035,935073-935074,936436,936445
Modified:
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
URL:
http://svn.apache.org/viewvc/openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java?rev=936453&r1=936452&r2=936453&view=diff
==============================================================================
---
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
(original)
+++
openjpa/branches/2.0.x/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
Wed Apr 21 19:18:14 2010
@@ -19,8 +19,13 @@
package org.apache.openjpa.persistence.lockmgr;
import javax.persistence.EntityManager;
+import javax.persistence.LockModeType;
import javax.persistence.Query;
+import org.apache.openjpa.persistence.FetchPlan;
+import org.apache.openjpa.persistence.OpenJPAEntityManager;
+import org.apache.openjpa.persistence.OpenJPAEntityManagerSPI;
+import org.apache.openjpa.persistence.OpenJPAQuery;
import org.apache.openjpa.persistence.TransactionRequiredException;
import org.apache.openjpa.persistence.test.AllowFailure;
import org.apache.openjpa.persistence.test.SQLListenerTestCase;
@@ -57,8 +62,7 @@ public class TestNamedQueryLockMode exte
EntityManager em = emf.createEntityManager();
// execute without a transaction
try {
- em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id",
- 0).getResultList();
+ em.createNamedQuery("findEmployeeByIdWithLock").setParameter("id",
0).getResultList();
fail("Expected " + TransactionRequiredException.class.getName());
} catch (TransactionRequiredException e) {
// Expected
@@ -69,7 +73,24 @@ public class TestNamedQueryLockMode exte
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
assertClausePresentInSQL("FOR UPDATE",
em.createNamedQuery("findEmployeeById").setParameter("id", 0));
- assertClausePresentInSQL("FOR UPDATE",
em.createNamedQuery("findEmployeeById").setParameter("id", 0));
+ assertClausePresentInSQL("FOR UPDATE",
em.createNamedQuery("findEmployeeById").setParameter("id", 0));
+ em.getTransaction().commit();
+ }
+
+ public void testForUpdateClauseAbsentInQueryWithFetchPlanNoneLockMode() {
+ OpenJPAEntityManagerSPI em = emf.createEntityManager();
+ em.getTransaction().begin();
+
+ OpenJPAQuery<?> q =
em.createNamedQuery("findEmployeeById").setParameter("id", 0);
+ FetchPlan fp = q.getFetchPlan();
+ fp.setReadLockMode(LockModeType.NONE);
+ assertClauseAbsentInSQL("FOR UPDATE", q);
+
+ q =
em.createNamedQuery("findEmployeeByIdWithNoLock").setParameter("id", 0);
+ fp = q.getFetchPlan();
+ fp.setReadLockMode(LockModeType.NONE);
+ assertClauseAbsentInSQL("FOR UPDATE", q);
+
em.getTransaction().commit();
}