Skip to content

Commit 41d1774

Browse files
committed
HHH-19949 Test to show that the issue has been resolved by HHH-19874
1 parent fee7ed7 commit 41d1774

File tree

1 file changed

+101
-0
lines changed

1 file changed

+101
-0
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.orm.test.fetch;
6+
7+
import jakarta.persistence.CascadeType;
8+
import jakarta.persistence.Entity;
9+
import jakarta.persistence.FetchType;
10+
import jakarta.persistence.GeneratedValue;
11+
import jakarta.persistence.Id;
12+
import jakarta.persistence.ManyToOne;
13+
import jakarta.persistence.OneToMany;
14+
import jakarta.persistence.Table;
15+
import jakarta.persistence.Tuple;
16+
import org.hibernate.annotations.Fetch;
17+
import org.hibernate.annotations.FetchMode;
18+
import org.hibernate.testing.orm.junit.DomainModel;
19+
import org.hibernate.testing.orm.junit.JiraKey;
20+
import org.hibernate.testing.orm.junit.SessionFactory;
21+
import org.hibernate.testing.orm.junit.SessionFactoryScope;
22+
import org.junit.jupiter.api.BeforeAll;
23+
import org.junit.jupiter.api.Test;
24+
25+
import java.util.ArrayList;
26+
import java.util.List;
27+
28+
import static org.assertj.core.api.Assertions.assertThat;
29+
30+
@DomainModel(
31+
annotatedClasses = {
32+
FetchModeSubselectAndQueryJoinTest.Node.class,
33+
FetchModeSubselectAndQueryJoinTest.Element.class
34+
}
35+
)
36+
@SessionFactory
37+
@JiraKey( "HHH-19949" )
38+
public class FetchModeSubselectAndQueryJoinTest {
39+
40+
@BeforeAll
41+
public void setUp(SessionFactoryScope scope) {
42+
scope.inTransaction(
43+
session -> {
44+
Node basik = new Node( "Child" );
45+
basik.elements.add( new Element( basik ) );
46+
basik.elements.add( new Element( basik ) );
47+
session.persist( basik );
48+
}
49+
);
50+
}
51+
52+
@Test
53+
public void tesSelect(SessionFactoryScope scope) {
54+
scope.inTransaction(
55+
session -> {
56+
List<Tuple> results = session.createSelectionQuery(
57+
"select distinct n, e from Node n join n.elements e ", Tuple.class ).getResultList();
58+
assertThat( results ).hasSize( 2 );
59+
}
60+
);
61+
}
62+
63+
@Entity(name = "Element")
64+
@Table(name = "Element")
65+
public static class Element {
66+
@Id
67+
@GeneratedValue
68+
Integer id;
69+
70+
@ManyToOne
71+
Node node;
72+
73+
public Element(Node node) {
74+
this.node = node;
75+
}
76+
77+
Element() {
78+
}
79+
}
80+
81+
@Entity(name = "Node")
82+
@Table(name = "Node")
83+
public static class Node {
84+
85+
@Id
86+
@GeneratedValue
87+
Integer id;
88+
String string;
89+
90+
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST, mappedBy = "node")
91+
@Fetch(FetchMode.SUBSELECT)
92+
List<Element> elements = new ArrayList<>();
93+
94+
public Node(String string) {
95+
this.string = string;
96+
}
97+
98+
Node() {
99+
}
100+
}
101+
}

0 commit comments

Comments
 (0)