Skip to content

Commit 9c25ae2

Browse files
committed
HHH-18515 Add test for issue
1 parent 9c457f2 commit 9c25ae2

File tree

1 file changed

+112
-0
lines changed

1 file changed

+112
-0
lines changed
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package org.hibernate.orm.test.query;
2+
3+
import org.hibernate.testing.orm.junit.DomainModel;
4+
import org.hibernate.testing.orm.junit.JiraKey;
5+
import org.hibernate.testing.orm.junit.SessionFactory;
6+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
7+
import org.junit.jupiter.api.AfterEach;
8+
import org.junit.jupiter.api.BeforeEach;
9+
import org.junit.jupiter.api.Test;
10+
11+
import jakarta.persistence.Column;
12+
import jakarta.persistence.DiscriminatorColumn;
13+
import jakarta.persistence.DiscriminatorType;
14+
import jakarta.persistence.DiscriminatorValue;
15+
import jakarta.persistence.Entity;
16+
import jakarta.persistence.EnumType;
17+
import jakarta.persistence.Enumerated;
18+
import jakarta.persistence.Id;
19+
import jakarta.persistence.Inheritance;
20+
import jakarta.persistence.InheritanceType;
21+
import jakarta.persistence.Table;
22+
23+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
24+
25+
@DomainModel(
26+
annotatedClasses = {
27+
NativeQueryAndDiscriminatorTest.BaseEntity.class,
28+
NativeQueryAndDiscriminatorTest.TestEntity.class
29+
}
30+
)
31+
@SessionFactory
32+
@JiraKey("HHH-18515")
33+
public class NativeQueryAndDiscriminatorTest {
34+
35+
36+
@BeforeEach
37+
public void setUp(SessionFactoryScope scope) {
38+
scope.inTransaction(
39+
session -> {
40+
TestEntity e = new TestEntity( 1l, "test", EntityDiscriminator.T );
41+
session.persist( e );
42+
}
43+
);
44+
}
45+
46+
@AfterEach
47+
public void tearDown(SessionFactoryScope scope) {
48+
scope.inTransaction(
49+
session -> {
50+
session.createMutationQuery( "delete TestEntity" ).executeUpdate();
51+
}
52+
);
53+
}
54+
55+
@Test
56+
public void testNativeQuery(SessionFactoryScope scope) {
57+
scope.inTransaction(
58+
session -> {
59+
BaseEntity entity = session.createNativeQuery(
60+
"select * from BASE_ENTITY where id = :id",
61+
BaseEntity.class
62+
)
63+
.setParameter( "id", 1l )
64+
.getSingleResult();
65+
assertThat( entity ).isNotNull();
66+
}
67+
);
68+
}
69+
70+
71+
@Entity(name = "BaseEntity")
72+
@Table(name = "BASE_ENTITY")
73+
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
74+
@DiscriminatorColumn(name = "discriminator", discriminatorType = DiscriminatorType.CHAR)
75+
@DiscriminatorValue("B")
76+
public static class BaseEntity {
77+
78+
@Id
79+
private Long id;
80+
81+
private String name;
82+
83+
@Column(insertable = false, updatable = false)
84+
@Enumerated(EnumType.STRING)
85+
private EntityDiscriminator discriminator;
86+
87+
public BaseEntity() {
88+
}
89+
90+
public BaseEntity(Long id, String name, EntityDiscriminator discriminator) {
91+
this.id = id;
92+
this.name = name;
93+
this.discriminator = discriminator;
94+
}
95+
}
96+
97+
@Entity(name = "TestEntity")
98+
@DiscriminatorValue("T")
99+
public static class TestEntity extends BaseEntity {
100+
101+
public TestEntity() {
102+
}
103+
104+
public TestEntity(Long id, String name, EntityDiscriminator discriminator) {
105+
super( id, name, discriminator );
106+
}
107+
}
108+
109+
enum EntityDiscriminator {
110+
T;
111+
}
112+
}

0 commit comments

Comments
 (0)