Skip to content

Commit fbb1dd0

Browse files
committed
HHH-18515 Add test for issue
1 parent 2d2c3a6 commit fbb1dd0

File tree

1 file changed

+116
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)