Skip to content

Commit 2e9eac2

Browse files
committed
HHH-19640 tests for update-generated fields and forced version increments
1 parent 5e84912 commit 2e9eac2

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.mapping.generated;
6+
7+
import jakarta.persistence.ElementCollection;
8+
import jakarta.persistence.Entity;
9+
import jakarta.persistence.Id;
10+
import jakarta.persistence.Version;
11+
import org.hibernate.annotations.UpdateTimestamp;
12+
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
13+
import org.hibernate.testing.orm.junit.Jpa;
14+
import org.junit.jupiter.api.Test;
15+
16+
import java.time.LocalDateTime;
17+
import java.util.Set;
18+
19+
import static org.hibernate.annotations.SourceType.DB;
20+
import static org.junit.jupiter.api.Assertions.assertTrue;
21+
22+
@Jpa(annotatedClasses = GeneratedByDbOnForcedIncrementTest.WithUpdateTimestamp.class)
23+
class GeneratedByDbOnForcedIncrementTest {
24+
@Test void test(EntityManagerFactoryScope scope) throws InterruptedException {
25+
var persisted = scope.fromTransaction( em -> {
26+
var entity = new WithUpdateTimestamp();
27+
em.persist( entity );
28+
return entity;
29+
} );
30+
Thread.sleep( 100 );
31+
var updated = scope.fromTransaction( em -> {
32+
var entity = em.find( WithUpdateTimestamp.class, 0L );
33+
entity.names.add( "Gavin" );
34+
return entity;
35+
} );
36+
assertTrue( persisted.updated.isBefore( updated.updated ) );
37+
}
38+
@Entity
39+
static class WithUpdateTimestamp {
40+
@Id long id;
41+
@Version long version;
42+
@UpdateTimestamp(source = DB)
43+
LocalDateTime updated;
44+
@ElementCollection
45+
Set<String> names;
46+
}
47+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.mapping.generated;
6+
7+
import jakarta.persistence.ElementCollection;
8+
import jakarta.persistence.Entity;
9+
import jakarta.persistence.Id;
10+
import jakarta.persistence.Version;
11+
import org.hibernate.annotations.UpdateTimestamp;
12+
import org.hibernate.testing.orm.junit.EntityManagerFactoryScope;
13+
import org.hibernate.testing.orm.junit.Jpa;
14+
import org.junit.jupiter.api.Test;
15+
16+
import java.time.LocalDateTime;
17+
import java.util.Set;
18+
19+
import static org.junit.jupiter.api.Assertions.assertTrue;
20+
21+
@Jpa(annotatedClasses = GeneratedOnForcedIncrementTest.WithUpdateTimestamp.class)
22+
class GeneratedOnForcedIncrementTest {
23+
@Test void test(EntityManagerFactoryScope scope) throws InterruptedException {
24+
var persisted = scope.fromTransaction( em -> {
25+
var entity = new WithUpdateTimestamp();
26+
em.persist( entity );
27+
return entity;
28+
} );
29+
Thread.sleep( 100 );
30+
var updated = scope.fromTransaction( em -> {
31+
var entity = em.find( WithUpdateTimestamp.class, 0L );
32+
entity.names.add( "Gavin" );
33+
return entity;
34+
} );
35+
assertTrue( persisted.updated.isBefore( updated.updated ) );
36+
}
37+
@Entity
38+
static class WithUpdateTimestamp {
39+
@Id long id;
40+
@Version long version;
41+
@UpdateTimestamp
42+
LocalDateTime updated;
43+
@ElementCollection
44+
Set<String> names;
45+
}
46+
}

0 commit comments

Comments
 (0)