diff --git a/openjpa-all/pom.xml b/openjpa-all/pom.xml index 4192de2ea..3237894ca 100644 --- a/openjpa-all/pom.xml +++ b/openjpa-all/pom.xml @@ -28,7 +28,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-all diff --git a/openjpa-examples/image-gallery/pom.xml b/openjpa-examples/image-gallery/pom.xml index ae54d2257..55cd2a55a 100644 --- a/openjpa-examples/image-gallery/pom.xml +++ b/openjpa-examples/image-gallery/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-examples - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT org.apache.openjpa.openjpa-examples diff --git a/openjpa-examples/openbooks/pom.xml b/openjpa-examples/openbooks/pom.xml index 87950916a..359d96bd7 100644 --- a/openjpa-examples/openbooks/pom.xml +++ b/openjpa-examples/openbooks/pom.xml @@ -29,7 +29,7 @@ org.apache.openjpa openjpa-examples - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT org.apache.openjpa.openjpa-examples diff --git a/openjpa-examples/pom.xml b/openjpa-examples/pom.xml index 2bf543116..71ed1e502 100644 --- a/openjpa-examples/pom.xml +++ b/openjpa-examples/pom.xml @@ -28,7 +28,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-examples diff --git a/openjpa-examples/simple/pom.xml b/openjpa-examples/simple/pom.xml index 51247e3bc..045423e5f 100644 --- a/openjpa-examples/simple/pom.xml +++ b/openjpa-examples/simple/pom.xml @@ -28,7 +28,7 @@ org.apache.openjpa openjpa-examples - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT org.apache.openjpa.openjpa-examples diff --git a/openjpa-features/pom.xml b/openjpa-features/pom.xml index 4c4e77f1b..2c311c101 100644 --- a/openjpa-features/pom.xml +++ b/openjpa-features/pom.xml @@ -18,7 +18,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-features diff --git a/openjpa-integration/daytrader/pom.xml b/openjpa-integration/daytrader/pom.xml index cb33e6f4a..746f33942 100644 --- a/openjpa-integration/daytrader/pom.xml +++ b/openjpa-integration/daytrader/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-integration - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-integration-daytrader diff --git a/openjpa-integration/examples/pom.xml b/openjpa-integration/examples/pom.xml index f09634e76..d32cb3704 100644 --- a/openjpa-integration/examples/pom.xml +++ b/openjpa-integration/examples/pom.xml @@ -37,7 +37,7 @@ org.apache.openjpa openjpa-integration - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-integration-examples diff --git a/openjpa-integration/jmx/pom.xml b/openjpa-integration/jmx/pom.xml index 0f3e379d6..7dc4b1c9f 100644 --- a/openjpa-integration/jmx/pom.xml +++ b/openjpa-integration/jmx/pom.xml @@ -28,7 +28,7 @@ org.apache.openjpa openjpa-integration - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-integration-jmx diff --git a/openjpa-integration/pom.xml b/openjpa-integration/pom.xml index 2a80e6ca6..1d553c32a 100644 --- a/openjpa-integration/pom.xml +++ b/openjpa-integration/pom.xml @@ -28,7 +28,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-integration diff --git a/openjpa-integration/slf4j/pom.xml b/openjpa-integration/slf4j/pom.xml index 8753fa4db..3edcc69c4 100644 --- a/openjpa-integration/slf4j/pom.xml +++ b/openjpa-integration/slf4j/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-integration - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-integration-slf4j diff --git a/openjpa-integration/tck/pom.xml b/openjpa-integration/tck/pom.xml index 01615fbe9..1921fac9e 100644 --- a/openjpa-integration/tck/pom.xml +++ b/openjpa-integration/tck/pom.xml @@ -78,7 +78,7 @@ org.apache.openjpa openjpa-integration - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-integration-tck diff --git a/openjpa-integration/validation/pom.xml b/openjpa-integration/validation/pom.xml index 6ae1ad5c1..7a57cae94 100644 --- a/openjpa-integration/validation/pom.xml +++ b/openjpa-integration/validation/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-integration - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-integration-validation diff --git a/openjpa-jdbc/pom.xml b/openjpa-jdbc/pom.xml index 3ebbfe765..4d15b8ddf 100644 --- a/openjpa-jdbc/pom.xml +++ b/openjpa-jdbc/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-jdbc diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java index ebd107f2d..e032bcbbd 100644 --- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java +++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java @@ -1048,6 +1048,7 @@ private Object getValue(Object ob, FieldMapping fmd, case JavaTypes.BIGINTEGER: case JavaTypes.LOCALE: case JavaTypes.OBJECT: + case JavaTypes.UUID_OBJ: case JavaTypes.OID: return sm.fetchObjectField(i); default: diff --git a/openjpa-jest/pom.xml b/openjpa-jest/pom.xml index 9dc147117..a09ed8fc8 100644 --- a/openjpa-jest/pom.xml +++ b/openjpa-jest/pom.xml @@ -28,7 +28,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-jest diff --git a/openjpa-junit5/pom.xml b/openjpa-junit5/pom.xml index e865ac5ac..4362608a7 100644 --- a/openjpa-junit5/pom.xml +++ b/openjpa-junit5/pom.xml @@ -24,7 +24,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-junit5 diff --git a/openjpa-kernel/pom.xml b/openjpa-kernel/pom.xml index 09ac39dde..31fec2de8 100644 --- a/openjpa-kernel/pom.xml +++ b/openjpa-kernel/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-kernel diff --git a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java index 6b3e657e7..7a9ee8f30 100644 --- a/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java +++ b/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/AttachStrategy.java @@ -201,6 +201,7 @@ protected boolean attachField(AttachManager manager, Object toAttach, case JavaTypes.OBJECT: case JavaTypes.OID: case JavaTypes.ENUM: + case JavaTypes.UUID_OBJ: val = fetchObjectField(i); if (val == null && !nullLoaded) return false; diff --git a/openjpa-kubernetes/pom.xml b/openjpa-kubernetes/pom.xml index 746ecc38c..d1e8c8284 100644 --- a/openjpa-kubernetes/pom.xml +++ b/openjpa-kubernetes/pom.xml @@ -28,7 +28,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-kubernetes diff --git a/openjpa-lib/pom.xml b/openjpa-lib/pom.xml index d6e3c2f62..0f4a934fc 100644 --- a/openjpa-lib/pom.xml +++ b/openjpa-lib/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-lib diff --git a/openjpa-persistence-jdbc/pom.xml b/openjpa-persistence-jdbc/pom.xml index 1b03a4ebe..a9461d19c 100644 --- a/openjpa-persistence-jdbc/pom.xml +++ b/openjpa-persistence-jdbc/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-persistence-jdbc diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/TestUuidGeneratedEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/TestUuidGeneratedEntity.java index 9796bea0d..be205c17a 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/TestUuidGeneratedEntity.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/TestUuidGeneratedEntity.java @@ -74,6 +74,69 @@ public void testDefaultValues() { closeEM(em); } + public void testMergeBeforePersist() { + EntityManager em = emf.createEntityManager(); + + UuidGeneratedEntity gv1 = new UuidGeneratedEntity(); + + em.getTransaction().begin(); + gv1 = em.merge(gv1); + em.getTransaction().commit(); + + em.refresh(gv1); + + assertNotNull(gv1.getId()); + assertNotNull(gv1.getNativeUuid()); + closeEM(em); + } + + public void testDetachAndMerge() { + EntityManager em = emf.createEntityManager(); + UuidGeneratedEntity gv = new UuidGeneratedEntity(); + gv.setBasicUuid(UUID.randomUUID()); + + em.getTransaction().begin(); + em.persist(gv); + em.getTransaction().commit(); + + assertTrue(em.contains(gv)); + em.detach(gv); + em.clear(); + assertFalse(em.contains(gv)); + + Long v = gv.getVersion(); + gv.setBasicUuid(UUID.randomUUID()); + + em.getTransaction().begin(); + gv = em.merge(gv); + em.getTransaction().commit(); + + assertTrue((v + 1) == gv.getVersion()); + + closeEM(em); + } + + public void testGetByReference() { + EntityManager em = emf.createEntityManager(); + UuidGeneratedEntity gv = new UuidGeneratedEntity(); + + em.getTransaction().begin(); + em.persist(gv); + em.getTransaction().commit(); + + assertTrue(em.contains(gv)); + em.detach(gv); + UUID id = gv.getId(); + UUID nid = gv.getNativeUuid(); + + em.getTransaction().begin(); + UuidGeneratedEntity rgv = em.getReference(UuidGeneratedEntity.class, id); + assertEquals(nid, rgv.getNativeUuid()); + em.getTransaction().commit(); + + closeEM(em); + } + public void testFindByUUIDProperty() { EntityManager em = emf.createEntityManager(); diff --git a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/UuidGeneratedEntity.java b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/UuidGeneratedEntity.java index 6c1909932..b8907bc96 100644 --- a/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/UuidGeneratedEntity.java +++ b/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/generationtype/UuidGeneratedEntity.java @@ -27,6 +27,7 @@ import jakarta.persistence.GeneratedValue; import jakarta.persistence.Id; import jakarta.persistence.ManyToOne; +import jakarta.persistence.Version; @Entity public class UuidGeneratedEntity { @@ -46,6 +47,10 @@ public class UuidGeneratedEntity { private UUID basicUuid; + @Version + @Column(name = "version_") + private Long version; + @ManyToOne private UuidGeneratedEntity parent; @@ -93,4 +98,12 @@ public void setParent(UuidGeneratedEntity parent) { this.parent = parent; } + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + } diff --git a/openjpa-persistence-locking/pom.xml b/openjpa-persistence-locking/pom.xml index 63891c5fe..dbd4672bd 100644 --- a/openjpa-persistence-locking/pom.xml +++ b/openjpa-persistence-locking/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-persistence-locking diff --git a/openjpa-persistence/pom.xml b/openjpa-persistence/pom.xml index 23933454c..148173990 100644 --- a/openjpa-persistence/pom.xml +++ b/openjpa-persistence/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-persistence diff --git a/openjpa-project/pom.xml b/openjpa-project/pom.xml index fe3560948..5bee07d4c 100644 --- a/openjpa-project/pom.xml +++ b/openjpa-project/pom.xml @@ -39,7 +39,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT apache-openjpa diff --git a/openjpa-project/src/doc/manual/manual.xml b/openjpa-project/src/doc/manual/manual.xml index e462634f6..ab17a4c76 100644 --- a/openjpa-project/src/doc/manual/manual.xml +++ b/openjpa-project/src/doc/manual/manual.xml @@ -62,9 +62,9 @@ ]> - Apache OpenJPA 3.2 User's Guide + Apache OpenJPA 4.1.2-SNAPSHOT User's Guide - 2006-2021 + 2006-2025 The Apache Software Foundation Built from OpenJPA version revision . diff --git a/openjpa-slice/pom.xml b/openjpa-slice/pom.xml index b05732d1a..3353132e2 100644 --- a/openjpa-slice/pom.xml +++ b/openjpa-slice/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-slice diff --git a/openjpa-tools/openjpa-fetch-statistics-was/pom.xml b/openjpa-tools/openjpa-fetch-statistics-was/pom.xml index 73556dbf8..f5e8e1654 100644 --- a/openjpa-tools/openjpa-fetch-statistics-was/pom.xml +++ b/openjpa-tools/openjpa-fetch-statistics-was/pom.xml @@ -17,7 +17,7 @@ org.apache.openjpa openjpa-tools - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-fetch-statistics-was diff --git a/openjpa-tools/openjpa-fetch-statistics/pom.xml b/openjpa-tools/openjpa-fetch-statistics/pom.xml index 31cbf4618..58f0d4d27 100644 --- a/openjpa-tools/openjpa-fetch-statistics/pom.xml +++ b/openjpa-tools/openjpa-fetch-statistics/pom.xml @@ -17,7 +17,7 @@ org.apache.openjpa openjpa-tools - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-fetch-statistics diff --git a/openjpa-tools/openjpa-maven-plugin/pom.xml b/openjpa-tools/openjpa-maven-plugin/pom.xml index 52a8e08dd..cf806acf1 100644 --- a/openjpa-tools/openjpa-maven-plugin/pom.xml +++ b/openjpa-tools/openjpa-maven-plugin/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-tools - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT ../pom.xml diff --git a/openjpa-tools/pom.xml b/openjpa-tools/pom.xml index 7598370a2..744b64fab 100644 --- a/openjpa-tools/pom.xml +++ b/openjpa-tools/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT diff --git a/openjpa-xmlstore/pom.xml b/openjpa-xmlstore/pom.xml index a4b39a91c..22d956d78 100644 --- a/openjpa-xmlstore/pom.xml +++ b/openjpa-xmlstore/pom.xml @@ -27,7 +27,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa-xmlstore diff --git a/openjpa/pom.xml b/openjpa/pom.xml index b5aa2b34d..6f836cddc 100644 --- a/openjpa/pom.xml +++ b/openjpa/pom.xml @@ -28,7 +28,7 @@ org.apache.openjpa openjpa-parent - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT openjpa diff --git a/pom.xml b/pom.xml index ac5af5327..2652dd416 100644 --- a/pom.xml +++ b/pom.xml @@ -35,7 +35,7 @@ OpenJPA Parent POM Apache OpenJPA implementation of Jakarta JPA 3.1 - 4.1.1-SNAPSHOT + 4.1.2-SNAPSHOT 11