Skip to content

Commit a6a0e68

Browse files
committed
HHH-9407 Test showing MapsId loses embeddable column configuration
1 parent d0f3b67 commit a6a0e68

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/*
2+
* SPDX-License-Identifier: LGPL-2.1-or-later
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.annotations.mapsid;
6+
7+
import jakarta.persistence.Column;
8+
import jakarta.persistence.Embeddable;
9+
import jakarta.persistence.EmbeddedId;
10+
import jakarta.persistence.Entity;
11+
import jakarta.persistence.Id;
12+
import jakarta.persistence.JoinColumn;
13+
import jakarta.persistence.JoinColumns;
14+
import jakarta.persistence.ManyToOne;
15+
import jakarta.persistence.MapsId;
16+
import org.hibernate.testing.orm.junit.DomainModel;
17+
import org.hibernate.testing.orm.junit.Jira;
18+
import org.hibernate.testing.orm.junit.SessionFactory;
19+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
20+
import org.junit.jupiter.api.Test;
21+
22+
@SessionFactory
23+
@DomainModel(
24+
annotatedClasses = {MapsEmbeddedIdNamingTest.BaseEntity.class, MapsEmbeddedIdNamingTest.BaseExtensionEntity.class, MapsEmbeddedIdNamingTest.ReferringEntity.class})
25+
@Jira("https://hibernate.atlassian.net/browse/HHH-9407")
26+
public class MapsEmbeddedIdNamingTest {
27+
28+
@Test
29+
void test(SessionFactoryScope scope) {
30+
scope.inTransaction( session -> {
31+
BaseEntity base = new BaseEntity();
32+
base.id = 1;
33+
session.persist( base );
34+
35+
BaseExtensionEntity extensionEntity = new BaseExtensionEntity();
36+
extensionEntity.id = new BaseExtensionId( base.id, 1 );
37+
extensionEntity.base = base;
38+
session.persist( extensionEntity );
39+
40+
ReferringEntity referringEntity = new ReferringEntity();
41+
referringEntity.id = 1;
42+
referringEntity.extension = extensionEntity;
43+
session.persist( referringEntity );
44+
} );
45+
}
46+
47+
@Entity
48+
public static class BaseEntity {
49+
@Id
50+
@Column(name = "base_id")
51+
public Integer id;
52+
}
53+
54+
@Entity
55+
public static class BaseExtensionEntity {
56+
@EmbeddedId
57+
public BaseExtensionId id;
58+
@ManyToOne(optional = false)
59+
@MapsId("baseId")
60+
public BaseEntity base;
61+
}
62+
63+
@Embeddable
64+
public record BaseExtensionId(
65+
@Column(name = "base_id")
66+
Integer baseId,
67+
@Column(name = "ext_number")
68+
int extensionNumber) {
69+
}
70+
71+
@Entity
72+
public static class ReferringEntity {
73+
@Id
74+
Integer id;
75+
76+
@ManyToOne(optional = false)
77+
@JoinColumns({
78+
@JoinColumn(name = "base_id", referencedColumnName = "base_id", insertable = false, updatable = false),
79+
@JoinColumn(name = "ext_number", referencedColumnName = "ext_number", insertable = false,
80+
updatable = false)
81+
})
82+
public BaseExtensionEntity extension;
83+
}
84+
85+
}

0 commit comments

Comments
 (0)