diff --git a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa21/advanced/EntityManagerFactoryTestSuite.java b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa21/advanced/EntityManagerFactoryTestSuite.java
index 20f4353..78585f0 100644
--- a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa21/advanced/EntityManagerFactoryTestSuite.java
+++ b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa21/advanced/EntityManagerFactoryTestSuite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012, 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017 Oracle and/or its affiliates. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  * which accompanies this distribution.
@@ -121,15 +121,22 @@ public void testAddNamedQuery(){
         closeEntityManager(em);
         em = createEntityManager();
 
-        namedQuery = em.createNamedQuery("Select_Employee_by_first_name");
-        assertTrue("LockMode not retained", namedQuery.getLockMode().equals(LockModeType.OPTIMISTIC_FORCE_INCREMENT));
-        assertTrue("MaxResults not retained", namedQuery.getMaxResults() == 1);
-        assertTrue("FirstResult not retained", namedQuery.getFirstResult() == 1);
-        namedQuery.setParameter("p1", names.get(names.size()-1)[0]);
-        beginTransaction(em);
-        assertTrue("MaxResults not applied", namedQuery.getResultList().size() == 1);
-        rollbackTransaction(em);
+        try {
+            beginTransaction(em);
+            namedQuery = em.createNamedQuery("Select_Employee_by_first_name");
+            assertTrue("LockMode not retained", namedQuery.getLockMode().equals(LockModeType.OPTIMISTIC_FORCE_INCREMENT));
+            assertTrue("MaxResults not retained", namedQuery.getMaxResults() == 1);
+            assertTrue("FirstResult not retained", namedQuery.getFirstResult() == 1);
+            namedQuery.setParameter("p1", names.get(names.size() - 1)[0]);
+            assertTrue("MaxResults not applied", namedQuery.getResultList().size() == 1);
+        } finally {
+            if (isTransactionActive(em)) {
+                rollbackTransaction(em);
+            }
+            closeEntityManager(em);
+        }
 
+        em = createEntityManager();
         query = em.createNativeQuery("SELECT EMP_ID FROM CMP3_EMPLOYEE");
         query.setMaxResults(1);
         factory.addNamedQuery("Select_Employee_NATIVE", query);
diff --git a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa22/advanced/EntityManagerFactoryTestSuite.java b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa22/advanced/EntityManagerFactoryTestSuite.java
index b751ef3..2be2425 100644
--- a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa22/advanced/EntityManagerFactoryTestSuite.java
+++ b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa22/advanced/EntityManagerFactoryTestSuite.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012, 2015 Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2017 Oracle and/or its affiliates. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  * which accompanies this distribution.
@@ -120,15 +120,22 @@ public void testAddNamedQuery(){
         closeEntityManager(em);
         em = createEntityManager();
 
-        namedQuery = em.createNamedQuery("Select_Employee_by_first_name");
-        assertTrue("LockMode not retained", namedQuery.getLockMode().equals(LockModeType.OPTIMISTIC_FORCE_INCREMENT));
-        assertTrue("MaxResults not retained", namedQuery.getMaxResults() == 1);
-        assertTrue("FirstResult not retained", namedQuery.getFirstResult() == 1);
-        namedQuery.setParameter("p1", names.get(names.size()-1)[0]);
-        beginTransaction(em);
-        assertTrue("MaxResults not applied", namedQuery.getResultList().size() == 1);
-        rollbackTransaction(em);
+        try {
+            beginTransaction(em);
+            namedQuery = em.createNamedQuery("Select_Employee_by_first_name");
+            assertTrue("LockMode not retained", namedQuery.getLockMode().equals(LockModeType.OPTIMISTIC_FORCE_INCREMENT));
+            assertTrue("MaxResults not retained", namedQuery.getMaxResults() == 1);
+            assertTrue("FirstResult not retained", namedQuery.getFirstResult() == 1);
+            namedQuery.setParameter("p1", names.get(names.size() - 1)[0]);
+            assertTrue("MaxResults not applied", namedQuery.getResultList().size() == 1);
+        } finally {
+            if (isTransactionActive(em)) {
+                rollbackTransaction(em);
+            }
+            closeEntityManager(em);
+        }
 
+        em = createEntityManager();
         query = em.createNativeQuery("SELECT EMP_ID FROM CMP3_EMPLOYEE");
         query.setMaxResults(1);
         factory.addNamedQuery("Select_Employee_NATIVE", query);
diff --git a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/EntityManagerFactoryDelegate.java b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/EntityManagerFactoryDelegate.java
index 0d66840..d449397 100644
--- a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/EntityManagerFactoryDelegate.java
+++ b/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/EntityManagerFactoryDelegate.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 1998, 2016 Oracle and/or its affiliates, IBM Corporation. All rights reserved.
+ * Copyright (c) 1998, 2017 Oracle and/or its affiliates, IBM Corporation. All rights reserved.
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
  * which accompanies this distribution.
@@ -776,11 +776,12 @@ public void setCommitOrder(CommitOrderType commitOrder) {
     @Override
     public void addNamedQuery(String name, Query query) {
         DatabaseQuery unwrapped = (DatabaseQuery) query.unwrap(DatabaseQuery.class).clone();
-        if (((QueryImpl)query).lockMode != null){
-            ((ObjectLevelReadQuery)unwrapped).setLockModeType(((QueryImpl)query).lockMode.name(), session);
+        QueryImpl originalQuery = query.unwrap(QueryImpl.class);
+        if (originalQuery.lockMode != null){
+            ((ObjectLevelReadQuery)unwrapped).setLockModeType(originalQuery.lockMode.name(), session);
         }
         if (unwrapped.isReadQuery()){
-            ((ReadQuery)unwrapped).setInternalMax((((QueryImpl)query).getMaxResultsInternal()));
+            ((ReadQuery)unwrapped).setInternalMax((originalQuery.getMaxResultsInternal()));
             if (query.getFirstResult() != QueryImpl.UNDEFINED){
                 ((ReadQuery)unwrapped).setFirstResult(query.getFirstResult());
             }
