10
10
import org .hibernate .testing .orm .junit .DomainModel ;
11
11
import org .hibernate .testing .orm .junit .SessionFactory ;
12
12
import org .hibernate .testing .orm .junit .SessionFactoryScope ;
13
+ import org .junit .jupiter .api .AfterEach ;
13
14
import org .junit .jupiter .api .BeforeEach ;
14
15
import org .junit .jupiter .api .Test ;
15
16
19
20
import jakarta .persistence .ManyToOne ;
20
21
import jakarta .persistence .Table ;
21
22
23
+ import static org .hamcrest .CoreMatchers .is ;
24
+ import static org .hamcrest .MatcherAssert .assertThat ;
22
25
import static org .junit .jupiter .api .Assertions .assertNotNull ;
23
26
24
27
@ DomainModel (
28
31
}
29
32
)
30
33
@ SessionFactory
31
- @ TestForIssue (jiraKey = "HHH-15223" )
32
34
public class EntityAsParamValueTest {
33
35
36
+ public static long ID_ENTITY_WHITOUT_ORGANIZER = 1 ;
37
+ public static long ID_ENTITY_WHIT_ORGANIZER = 2 ;
38
+
34
39
@ BeforeEach
35
40
public void setUp (SessionFactoryScope scope ) {
36
41
scope .inTransaction (
37
42
session -> {
38
43
Organizer organizer = new Organizer ( 1L , "Test Organizer" );
39
44
40
- Event eventWithOrganizer = new Event ( 1L , "Test Event" , organizer );
41
- Event eventWithoutOrganizer = new Event ( 2L , "Null Event" , null );
45
+ Event eventWithOrganizer = new Event ( ID_ENTITY_WHIT_ORGANIZER , "Test Event" , organizer );
46
+ Event eventWithoutOrganizer = new Event ( ID_ENTITY_WHITOUT_ORGANIZER , "Null Event" , null );
42
47
43
48
session .persist ( organizer );
44
49
session .persist ( eventWithOrganizer );
@@ -47,7 +52,49 @@ public void setUp(SessionFactoryScope scope) {
47
52
);
48
53
}
49
54
55
+ @ AfterEach
56
+ public void tearDown (SessionFactoryScope scope ) {
57
+ scope .inTransaction (
58
+ session -> {
59
+ session .createMutationQuery ( "delete from Event" ).executeUpdate ();
60
+ session .createMutationQuery ( "delete from Organizer" ).executeUpdate ();
61
+ }
62
+ );
63
+ }
64
+
65
+ @ Test
66
+ @ TestForIssue (jiraKey = "HHH-15256" )
67
+ public void testQueryWithLeftJoinEntityAsParamValue (SessionFactoryScope scope ) {
68
+ scope .inTransaction (
69
+ session -> {
70
+ Organizer organizer = session .get ( Organizer .class , 1L );
71
+ assertNotNull ( organizer );
72
+
73
+ Event event = session .createQuery (
74
+ "FROM Event e LEFT JOIN e.organizer WHERE (:organizer IS NULL AND e.organizer IS NULL OR e.organizer = :organizer)" ,
75
+ Event .class
76
+ )
77
+ .setParameter ( "organizer" , organizer )
78
+ .setMaxResults ( 1 )
79
+ .uniqueResult ();
80
+ assertNotNull ( event );
81
+ assertThat ( event .getId (), is ( ID_ENTITY_WHIT_ORGANIZER ) );
82
+
83
+ event = session .createQuery (
84
+ "FROM Event e LEFT JOIN e.organizer WHERE (:organizer IS NULL AND e.organizer IS NULL OR e.organizer = :organizer)" ,
85
+ Event .class
86
+ )
87
+ .setParameter ( "organizer" , null )
88
+ .setMaxResults ( 1 )
89
+ .uniqueResult ();
90
+ assertNotNull ( event );
91
+ assertThat ( event .getId (), is ( ID_ENTITY_WHITOUT_ORGANIZER ) );
92
+ }
93
+ );
94
+ }
95
+
50
96
@ Test
97
+ @ TestForIssue (jiraKey = "HHH-15223" )
51
98
public void testQueryWithEntityAsParamValue (SessionFactoryScope scope ) {
52
99
scope .inTransaction (
53
100
session -> {
@@ -62,6 +109,7 @@ public void testQueryWithEntityAsParamValue(SessionFactoryScope scope) {
62
109
.setMaxResults ( 1 )
63
110
.uniqueResult ();
64
111
assertNotNull ( event );
112
+ assertThat ( event .getId (), is ( ID_ENTITY_WHIT_ORGANIZER ) );
65
113
66
114
event = session .createQuery (
67
115
"FROM Event e WHERE (:organizer IS NULL AND e.organizer IS NULL OR e.organizer = :organizer)" ,
@@ -71,6 +119,7 @@ public void testQueryWithEntityAsParamValue(SessionFactoryScope scope) {
71
119
.setMaxResults ( 1 )
72
120
.uniqueResult ();
73
121
assertNotNull ( event );
122
+ assertThat ( event .getId (), is ( ID_ENTITY_WHITOUT_ORGANIZER ) );
74
123
}
75
124
);
76
125
}
0 commit comments