diff --git a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLSimpleTestSuite.java b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLSimpleTestSuite.java
index 4beb714..d2daa8a 100644
--- a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLSimpleTestSuite.java
+++ b/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/tests/jpa/jpql/JUnitJPQLSimpleTestSuite.java
@@ -2434,7 +2434,7 @@ public void testOrderByWithParenthesesAsc() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2448,7 +2448,7 @@ public void testOrderByWithParenthesesDesc() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2462,7 +2462,7 @@ public void testOrderByWithParenthesesDefault() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2476,7 +2476,7 @@ public void testOrderByWithParenthesesCalculatedAsc() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2490,7 +2490,7 @@ public void testOrderByWithParenthesesCalculatedDesc() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2504,7 +2504,7 @@ public void testOrderByWithParenthesesCalculatedDefault() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2518,7 +2518,7 @@ public void testOrderByWithParenthesesCalculatedAndNormalAsc() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2532,7 +2532,7 @@ public void testOrderByWithParenthesesCalculatedAndNormalDesc() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2546,7 +2546,7 @@ public void testOrderByWithParenthesesCalculatedAndNormalDefault() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2560,7 +2560,7 @@ public void testOrderByWithParenthesesCalculatedAndNormalHybrid() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2574,7 +2574,7 @@ public void testOrderByWithParenthesesAllAttributes() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
@@ -2588,7 +2588,7 @@ public void testOrderByWithParenthesesAllAttributesHybrid() {
             List<Employee> results = query.getResultList();
             assertFalse(results.isEmpty());
         } finally {
-            em.close();
+            closeEntityManager(em);
         }
     }
     
