You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2010/04/21 21:05:41 UTC
svn commit: r936445 -
/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
Author: curtisr7
Date: Wed Apr 21 19:05:41 2010
New Revision: 936445
URL: http://svn.apache.org/viewvc?rev=936445&view=rev
Log:
OPENJPA-1638: Add new testcase.
Modified:
openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
Modified: openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java?rev=936445&r1=936444&r2=936445&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java (original)
+++ openjpa/trunk/openjpa-persistence-locking/src/test/java/org/apache/openjpa/persistence/lockmgr/TestNamedQueryLockMode.java Wed Apr 21 19:05:41 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
@@ -70,6 +74,29 @@ public class TestNamedQueryLockMode exte
em.getTransaction().begin();
assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeById").setParameter("id", 0));
assertClausePresentInSQL("FOR UPDATE", em.createNamedQuery("findEmployeeById").setParameter("id", 0));
+
+ OpenJPAEntityManager oem = (OpenJPAEntityManager)em;
+ OpenJPAQuery<?> q = oem.createNamedQuery("findEmployeeById").setParameter("id", 0);
+ FetchPlan fp = q.getFetchPlan();
+ fp.setReadLockMode(LockModeType.NONE);
+
+ 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();
}