This is an automated email from the ASF dual-hosted git repository. cristof pushed a commit to branch OPENJPA-2940 in repository https://gitbox.apache.org/repos/asf/openjpa.git
commit bda14fe5420818ad1a27026998d1a268a035b5c0 Author: Paulo Cristovão de Araújo Silva Filho <[email protected]> AuthorDate: Wed May 13 07:49:47 2026 -0300 [OPENJPA-2940] Minor fixes so CriteriaTests work on pg --- .../openjpa/persistence/criteria/AbstractCriteriaTestCase.java | 2 +- .../org/apache/openjpa/persistence/criteria/CriteriaTest.java | 7 +++++-- .../org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java | 5 +++-- .../org/apache/openjpa/persistence/criteria/TestSubqueries.java | 5 +++-- .../openjpa/persistence/criteria/results/TestMultiselect.java | 8 ++------ 5 files changed, 14 insertions(+), 13 deletions(-) diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java index 8649db281..8db426de4 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/AbstractCriteriaTestCase.java @@ -84,7 +84,7 @@ public abstract class AbstractCriteriaTestCase extends TestCase { */ protected OpenJPAEntityManagerFactorySPI createNamedEMF(Class<?>... types) { Map<Object, Object> map = new HashMap<>(); - map.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true," + "SchemaAction='add')"); + map.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true," + "SchemaAction='drop,add')"); map.put("openjpa.jdbc.QuerySQLCache", "false"); map.put("openjpa.DynamicEnhancementAgent", "false"); map.put("openjpa.RuntimeUnenhancedClasses", "unsupported"); diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CriteriaTest.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CriteriaTest.java index a4f52caae..4bd604bdf 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CriteriaTest.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/CriteriaTest.java @@ -66,16 +66,19 @@ public abstract class CriteriaTest extends AbstractCriteriaTestCase { @Override public void tearDown() throws Exception { if (em != null && em.isOpen()) { + if (em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } em.close(); - em = null; } cb = null; auditor.clear(); auditor = null; + em = null; if (emf != null && emf.isOpen()) { emf.close(); - emf = null; } + emf = null; super.tearDown(); } diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java index 3eade3e85..d349d02aa 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestJPQLSubquery.java @@ -35,6 +35,7 @@ import jakarta.persistence.criteria.SetJoin; import jakarta.persistence.criteria.Subquery; import org.apache.openjpa.jdbc.sql.DerbyDictionary; +import org.apache.openjpa.jdbc.sql.PostgresDictionary; /** * Tests type-strict version of Criteria API. @@ -1156,7 +1157,7 @@ public class TestJPQLSubquery extends CriteriaTest { + " where o.customer.id = o2.customer.id)"; String expectedSQL = "SELECT t0.id FROM CR_ODR t0 WHERE (t0.delivered = (" - + "SELECT CASE WHEN t1.quantity > ? THEN 1 WHEN t1.quantity = ? THEN 0 ELSE 0 END " + + "SELECT CASE WHEN t1.quantity > ? THEN true WHEN t1.quantity = ? THEN false ELSE false END " + "FROM CR_ODR t1 WHERE (t0.CUSTOMER_ID = t1.CUSTOMER_ID)))"; executeAndCompareSQL(jpql, expectedSQL); @@ -1291,7 +1292,7 @@ public class TestJPQLSubquery extends CriteriaTest { + " where o.quantity > 10)"; String useCast = getDictionary() instanceof DerbyDictionary ? "(CAST(t1.name AS VARCHAR(1000)) || CAST(? AS VARCHAR(1000))) " - : "CONCAT(t1.name,?) "; + : ((getDictionary() instanceof PostgresDictionary) ? "(t1.name||?) " : "CONCAT(t1.name,?) "); String expectedSQL = "SELECT t2.id FROM CR_ODR t2 " + "INNER JOIN CR_CUST t3 ON t2.CUSTOMER_ID = t3.id WHERE (t3.name IN (" + "SELECT " + useCast diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestSubqueries.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestSubqueries.java index 5e3a61b77..1602aacc7 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestSubqueries.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/TestSubqueries.java @@ -687,8 +687,9 @@ public class TestSubqueries extends CriteriaTest { em.createQuery("delete from Customer c where c.name = 'Capricorn'").executeUpdate(); em.flush(); - if (!txActive) { - em.getTransaction().commit(); + em.getTransaction().commit(); + if (txActive) { + em.getTransaction().begin(); } } diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/results/TestMultiselect.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/results/TestMultiselect.java index 04485e702..79e052ccc 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/results/TestMultiselect.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/criteria/results/TestMultiselect.java @@ -40,16 +40,12 @@ import org.apache.openjpa.persistence.criteria.Person_; */ public class TestMultiselect extends CriteriaTest { - private static boolean initialized = false; @Override public void setUp() throws Exception { super.setUp(); - if (!initialized) { - clearData(); - createData(); - initialized = true; - } + clearData(); + createData(); } void clearData() {
