Skip to content

Commit 4fd9a4f

Browse files
committed
HHH-18158 additional test
Signed-off-by: Gavin King <[email protected]>
1 parent 1f9add3 commit 4fd9a4f

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
package org.hibernate.orm.test.records;
2+
3+
import jakarta.persistence.CascadeType;
4+
import jakarta.persistence.Column;
5+
import jakarta.persistence.Embeddable;
6+
import jakarta.persistence.EmbeddedId;
7+
import jakarta.persistence.Entity;
8+
import jakarta.persistence.FetchType;
9+
import jakarta.persistence.GeneratedValue;
10+
import jakarta.persistence.GenerationType;
11+
import jakarta.persistence.Id;
12+
import jakarta.persistence.JoinColumn;
13+
import jakarta.persistence.ManyToOne;
14+
import jakarta.persistence.OneToMany;
15+
import jakarta.persistence.SequenceGenerator;
16+
import org.hibernate.testing.orm.junit.DomainModel;
17+
import org.hibernate.testing.orm.junit.SessionFactory;
18+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
19+
import org.junit.jupiter.api.Test;
20+
21+
import java.util.Collection;
22+
import java.util.Collections;
23+
24+
import static org.junit.jupiter.api.Assertions.assertNotNull;
25+
26+
@SessionFactory
27+
@DomainModel(annotatedClasses = {GenericEnbeddedIdRecordTest.MainEntity.class, GenericEnbeddedIdRecordTest.ReferencedEntity.class})
28+
class GenericEnbeddedIdRecordTest {
29+
30+
@Test
31+
void testOverrideJoinColumn(SessionFactoryScope scope) {
32+
scope.inTransaction(entityManager -> {
33+
MainEntity mainEntity = new MainEntity();
34+
ReferencedEntity referencedEntity = new ReferencedEntity();
35+
mainEntity.id = new GenericEmbeddedId<>(referencedEntity);
36+
referencedEntity.entities = Collections.singleton(mainEntity);
37+
entityManager.persist(referencedEntity);
38+
assertNotNull(mainEntity);
39+
});
40+
}
41+
42+
@Embeddable
43+
public record GenericEmbeddedId<T>(@ManyToOne(fetch = FetchType.EAGER)
44+
@JoinColumn(name = "REFERENCED_ENTITY_ID")
45+
T referencedEntity) {
46+
}
47+
48+
@Entity
49+
public static class MainEntity {
50+
51+
@EmbeddedId
52+
private GenericEmbeddedId<ReferencedEntity> id;
53+
54+
@Column(name = "DESCRIPTION")
55+
private String description;
56+
57+
}
58+
59+
@Entity
60+
public static class ReferencedEntity {
61+
62+
@Id
63+
@GeneratedValue(strategy = GenerationType.SEQUENCE,
64+
generator = "REFERENCED_ENTITY_ID_GEN")
65+
@SequenceGenerator(name = "REFERENCED_ENTITY_ID_GEN")
66+
@Column(name = "REFERENCED_ENTITY_ID")
67+
private Long id;
68+
69+
@OneToMany(mappedBy = "id.referencedEntity", cascade = CascadeType.ALL)
70+
private Collection<MainEntity> entities;
71+
72+
}
73+
}

0 commit comments

Comments
 (0)