Skip to content

Commit c00ca3e

Browse files
committed
HHH-17283 Add test for issue
1 parent 624040c commit c00ca3e

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later
5+
* See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html
6+
*/
7+
package org.hibernate.orm.test.query.hql;
8+
9+
import org.hibernate.testing.orm.domain.gambit.EmbeddedIdEntity;
10+
import org.hibernate.testing.orm.junit.DomainModel;
11+
import org.hibernate.testing.orm.junit.Jira;
12+
import org.hibernate.testing.orm.junit.SessionFactory;
13+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
14+
import org.junit.jupiter.api.AfterAll;
15+
import org.junit.jupiter.api.BeforeAll;
16+
import org.junit.jupiter.api.Test;
17+
18+
import static org.assertj.core.api.Assertions.assertThat;
19+
20+
/**
21+
* @author Marco Belladelli
22+
*/
23+
@DomainModel( annotatedClasses = EmbeddedIdEntity.class )
24+
@SessionFactory
25+
@Jira( "https://hibernate.atlassian.net/browse/HHH-17283" )
26+
public class EmbeddedTupleSubqueryComparisonTest {
27+
@BeforeAll
28+
public void setUp(SessionFactoryScope scope) {
29+
scope.inTransaction( session -> {
30+
final EmbeddedIdEntity entity = new EmbeddedIdEntity();
31+
entity.setId( new EmbeddedIdEntity.EmbeddedIdEntityId( 1, "1" ) );
32+
session.persist( entity );
33+
} );
34+
}
35+
36+
@AfterAll
37+
public void tearDown(SessionFactoryScope scope) {
38+
scope.inTransaction( session -> session.createMutationQuery( "delete from EmbeddedIdEntity" ).executeUpdate() );
39+
}
40+
41+
@Test
42+
public void testIdSubquery(SessionFactoryScope scope) {
43+
scope.inTransaction( session -> {
44+
final EmbeddedIdEntity result = session.createQuery(
45+
"from EmbeddedIdEntity e1 where e1.id in " +
46+
"(select e2.id from EmbeddedIdEntity e2)",
47+
EmbeddedIdEntity.class
48+
).getSingleResult();
49+
assertThat( result ).isNotNull();
50+
} );
51+
}
52+
53+
@Test
54+
public void testJoinSubquery(SessionFactoryScope scope) {
55+
scope.inTransaction( session -> {
56+
final EmbeddedIdEntity result = session.createQuery(
57+
"from EmbeddedIdEntity e1 where e1.id in " +
58+
"(select e2_id from EmbeddedIdEntity e2 join e2.id as e2_id)",
59+
EmbeddedIdEntity.class
60+
).getSingleResult();
61+
assertThat( result ).isNotNull();
62+
} );
63+
}
64+
65+
@Test
66+
public void testExplicitTupleSubquery(SessionFactoryScope scope) {
67+
scope.inTransaction( session -> {
68+
final EmbeddedIdEntity result = session.createQuery(
69+
"from EmbeddedIdEntity e1 where (e1.id.value1, e1.id.value2) in " +
70+
"(select e2.id.value1, e2.id.value2 from EmbeddedIdEntity e2)",
71+
EmbeddedIdEntity.class
72+
).getSingleResult();
73+
assertThat( result ).isNotNull();
74+
} );
75+
}
76+
77+
@Test
78+
public void testEntitySubquery(SessionFactoryScope scope) {
79+
scope.inTransaction( session -> {
80+
final EmbeddedIdEntity result = session.createQuery(
81+
"from EmbeddedIdEntity e1 where e1 in " +
82+
"(select e2 from EmbeddedIdEntity e2)",
83+
EmbeddedIdEntity.class
84+
).getSingleResult();
85+
assertThat( result ).isNotNull();
86+
} );
87+
}
88+
}

0 commit comments

Comments
 (0)