15
15
*/
16
16
package org .springframework .data .jpa .repository .query ;
17
17
18
- import static org .assertj .core .api .Assertions .assertThat ;
19
- import static org .assertj .core .api .Assertions .assertThatExceptionOfType ;
20
- import static org .assertj .core .api .Assertions .assertThatIllegalArgumentException ;
21
- import static org .assertj .core .api .Assertions .assertThatNullPointerException ;
18
+ import static org .assertj .core .api .Assertions .*;
22
19
23
20
import jakarta .persistence .EntityManager ;
24
21
import jakarta .persistence .PersistenceContext ;
35
32
import org .junit .jupiter .api .Disabled ;
36
33
import org .junit .jupiter .api .Test ;
37
34
import org .junit .jupiter .api .extension .ExtendWith ;
35
+
38
36
import org .springframework .data .jpa .domain .JpaSort ;
39
37
import org .springframework .data .jpa .domain .sample .User ;
40
38
import org .springframework .test .context .ContextConfiguration ;
@@ -57,186 +55,199 @@ class HqlOrderExpressionVisitorUnitTests {
57
55
@ Test
58
56
void genericFunctions () {
59
57
60
- assertThat (renderOrderBy (JpaSort .unsafe ("LENGTH(firstname)" ), "u " ))
61
- .startsWithIgnoringCase ("order by character_length(u .firstname) asc" );
62
- assertThat (renderOrderBy (JpaSort .unsafe ("char_length(firstname)" ), "u " ))
63
- .startsWithIgnoringCase ("order by char_length(u .firstname) asc" );
58
+ assertThat (renderOrderBy (JpaSort .unsafe ("LENGTH(firstname)" ), "var_1 " ))
59
+ .startsWithIgnoringCase ("order by character_length(var_1 .firstname) asc" );
60
+ assertThat (renderOrderBy (JpaSort .unsafe ("char_length(firstname)" ), "var_1 " ))
61
+ .startsWithIgnoringCase ("order by char_length(var_1 .firstname) asc" );
64
62
65
- assertThat (renderOrderBy (JpaSort .unsafe ("nlssort(firstname, 'NLS_SORT = XGERMAN_DIN_AI')" ), "u " ))
66
- .startsWithIgnoringCase ("order by nlssort(u .firstname, 'NLS_SORT = XGERMAN_DIN_AI')" );
63
+ assertThat (renderOrderBy (JpaSort .unsafe ("nlssort(firstname, 'NLS_SORT = XGERMAN_DIN_AI')" ), "var_1 " ))
64
+ .startsWithIgnoringCase ("order by nlssort(var_1 .firstname, 'NLS_SORT = XGERMAN_DIN_AI')" );
67
65
}
68
66
69
67
@ Test // GH-3172
70
68
void cast () {
71
69
72
70
assertThatExceptionOfType (UnsupportedOperationException .class )
73
- .isThrownBy (() -> renderOrderBy (JpaSort .unsafe ("cast(emailAddress as date)" ), "u " ));
71
+ .isThrownBy (() -> renderOrderBy (JpaSort .unsafe ("cast(emailAddress as date)" ), "var_1 " ));
74
72
}
75
73
76
74
@ Test // GH-3172
77
75
void extract () {
78
76
79
- assertThat (renderOrderBy (JpaSort .unsafe ("EXTRACT(DAY FROM createdAt)" ), "u " ))
80
- .startsWithIgnoringCase ("order by extract(day from u .createdAt)" );
77
+ assertThat (renderOrderBy (JpaSort .unsafe ("EXTRACT(DAY FROM createdAt)" ), "var_1 " ))
78
+ .startsWithIgnoringCase ("order by extract(day from var_1 .createdAt)" );
81
79
82
- assertThat (renderOrderBy (JpaSort .unsafe ("WEEK(createdAt)" ), "u " ))
83
- .startsWithIgnoringCase ("order by extract(week from u .createdAt)" );
80
+ assertThat (renderOrderBy (JpaSort .unsafe ("WEEK(createdAt)" ), "var_1 " ))
81
+ .startsWithIgnoringCase ("order by extract(week from var_1 .createdAt)" );
84
82
}
85
83
86
84
@ Test // GH-3172
87
85
void trunc () {
88
- assertThat (renderOrderBy (JpaSort .unsafe ("TRUNC(age)" ), "u" )).startsWithIgnoringCase ("order by trunc(u.age)" );
86
+ assertThat (renderOrderBy (JpaSort .unsafe ("TRUNC(age)" ), "var_1" ))
87
+ .startsWithIgnoringCase ("order by trunc(var_1.age)" );
89
88
}
90
89
91
90
@ Test // GH-3172
92
91
void upperLower () {
93
- assertThat (renderOrderBy (JpaSort .unsafe ("upper(firstname)" ), "u " ))
94
- .startsWithIgnoringCase ("order by upper(u .firstname)" );
95
- assertThat (renderOrderBy (JpaSort .unsafe ("lower(firstname)" ), "u " ))
96
- .startsWithIgnoringCase ("order by lower(u .firstname)" );
92
+ assertThat (renderOrderBy (JpaSort .unsafe ("upper(firstname)" ), "var_1 " ))
93
+ .startsWithIgnoringCase ("order by upper(var_1 .firstname)" );
94
+ assertThat (renderOrderBy (JpaSort .unsafe ("lower(firstname)" ), "var_1 " ))
95
+ .startsWithIgnoringCase ("order by lower(var_1 .firstname)" );
97
96
}
98
97
99
98
@ Test // GH-3172
100
99
void substring () {
101
- assertThat (renderOrderBy (JpaSort .unsafe ("substring(emailAddress, 0, 3)" ), "u " ))
102
- .startsWithIgnoringCase ("order by substring(u .emailAddress, 0, 3) asc" );
103
- assertThat (renderOrderBy (JpaSort .unsafe ("substring(emailAddress, 0)" ), "u " ))
104
- .startsWithIgnoringCase ("order by substring(u .emailAddress, 0) asc" );
100
+ assertThat (renderOrderBy (JpaSort .unsafe ("substring(emailAddress, 0, 3)" ), "var_1 " ))
101
+ .startsWithIgnoringCase ("order by substring(var_1 .emailAddress, 0, 3) asc" );
102
+ assertThat (renderOrderBy (JpaSort .unsafe ("substring(emailAddress, 0)" ), "var_1 " ))
103
+ .startsWithIgnoringCase ("order by substring(var_1 .emailAddress, 0) asc" );
105
104
}
106
105
107
106
@ Test // GH-3172
108
107
void repeat () {
109
- assertThat (renderOrderBy (JpaSort .unsafe ("repeat('a', 5)" ), "u " ))
108
+ assertThat (renderOrderBy (JpaSort .unsafe ("repeat('a', 5)" ), "var_1 " ))
110
109
.startsWithIgnoringCase ("order by repeat('a', 5) asc" );
111
110
}
112
111
113
112
@ Test // GH-3172
114
113
void literals () {
115
114
116
- assertThat (renderOrderBy (JpaSort .unsafe ("age + 1" ), "u" )).startsWithIgnoringCase ("order by u.age + 1" );
117
- assertThat (renderOrderBy (JpaSort .unsafe ("age + 1l" ), "u" )).startsWithIgnoringCase ("order by u.age + 1" );
118
- assertThat (renderOrderBy (JpaSort .unsafe ("age + 1L" ), "u" )).startsWithIgnoringCase ("order by u.age + 1" );
119
- assertThat (renderOrderBy (JpaSort .unsafe ("age + 1.1" ), "u" )).startsWithIgnoringCase ("order by u.age + 1.1" );
120
- assertThat (renderOrderBy (JpaSort .unsafe ("age + 1.1f" ), "u" )).startsWithIgnoringCase ("order by u.age + 1.1" );
121
- assertThat (renderOrderBy (JpaSort .unsafe ("age + 1.1bi" ), "u" )).startsWithIgnoringCase ("order by u.age + 1.1" );
122
- assertThat (renderOrderBy (JpaSort .unsafe ("age + 1.1bd" ), "u" )).startsWithIgnoringCase ("order by u.age + 1.1" );
123
- assertThat (renderOrderBy (JpaSort .unsafe ("age + 0x12" ), "u" )).startsWithIgnoringCase ("order by u.age + 18" );
115
+ assertThat (renderOrderBy (JpaSort .unsafe ("age + 1" ), "var_1" )).startsWithIgnoringCase ("order by var_1.age + 1" );
116
+ assertThat (renderOrderBy (JpaSort .unsafe ("age + 1l" ), "var_1" )).startsWithIgnoringCase ("order by var_1.age + 1" );
117
+ assertThat (renderOrderBy (JpaSort .unsafe ("age + 1L" ), "var_1" )).startsWithIgnoringCase ("order by var_1.age + 1" );
118
+ assertThat (renderOrderBy (JpaSort .unsafe ("age + 1.1" ), "var_1" )).startsWithIgnoringCase ("order by var_1.age + 1.1" );
119
+ assertThat (renderOrderBy (JpaSort .unsafe ("age + 1.1f" ), "var_1" )).startsWithIgnoringCase ("order by var_1.age + 1.1" );
120
+ assertThat (renderOrderBy (JpaSort .unsafe ("age + 1.1bi" ), "var_1" ))
121
+ .startsWithIgnoringCase ("order by var_1.age + 1.1" );
122
+ assertThat (renderOrderBy (JpaSort .unsafe ("age + 1.1bd" ), "var_1" ))
123
+ .startsWithIgnoringCase ("order by var_1.age + 1.1" );
124
+ assertThat (renderOrderBy (JpaSort .unsafe ("age + 0x12" ), "var_1" )).startsWithIgnoringCase ("order by var_1.age + 18" );
124
125
}
125
126
126
127
@ Test // GH-3172
127
128
void temporalLiterals () {
128
129
129
130
// JDBC
130
- assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {ts '2024-01-01 12:34:56'}" ), "u " ))
131
- .startsWithIgnoringCase ("order by u .createdAt + '2024-01-01T12:34:56'" );
131
+ assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {ts '2024-01-01 12:34:56'}" ), "var_1 " ))
132
+ .startsWithIgnoringCase ("order by var_1 .createdAt + '2024-01-01T12:34:56'" );
132
133
133
- assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {ts '2012-01-03 09:00:00.000000001'}" ), "u " ))
134
- .startsWithIgnoringCase ("order by u .createdAt + '2012-01-03T09:00:00.000000001'" );
134
+ assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {ts '2012-01-03 09:00:00.000000001'}" ), "var_1 " ))
135
+ .startsWithIgnoringCase ("order by var_1 .createdAt + '2012-01-03T09:00:00.000000001'" );
135
136
136
137
// Hibernate NPE
137
- assertThatIllegalArgumentException ().isThrownBy (() -> renderOrderBy (JpaSort .unsafe ("createdAt + {t '12:34:56'}" ), "u" ));
138
+ assertThatIllegalArgumentException ()
139
+ .isThrownBy (() -> renderOrderBy (JpaSort .unsafe ("createdAt + {t '12:34:56'}" ), "var_1" ));
138
140
139
- assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {d '2024-01-01'}" ), "u " ))
140
- .startsWithIgnoringCase ("order by u .createdAt + '2024-01-01'" );
141
+ assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {d '2024-01-01'}" ), "var_1 " ))
142
+ .startsWithIgnoringCase ("order by var_1 .createdAt + '2024-01-01'" );
141
143
142
144
// JPQL
143
- assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {ts 2024-01-01 12:34:56}" ), "u " ))
144
- .startsWithIgnoringCase ("order by u .createdAt + '2024-01-01T12:34:56'" );
145
+ assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {ts 2024-01-01 12:34:56}" ), "var_1 " ))
146
+ .startsWithIgnoringCase ("order by var_1 .createdAt + '2024-01-01T12:34:56'" );
145
147
146
- assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {t 12:34:56}" ), "u " ))
147
- .startsWithIgnoringCase ("order by u .createdAt + '12:34:56'" );
148
+ assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {t 12:34:56}" ), "var_1 " ))
149
+ .startsWithIgnoringCase ("order by var_1 .createdAt + '12:34:56'" );
148
150
149
- assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {d 2024-01-01}" ), "u " ))
150
- .startsWithIgnoringCase ("order by u .createdAt + '2024-01-01'" );
151
+ assertThat (renderOrderBy (JpaSort .unsafe ("createdAt + {d 2024-01-01}" ), "var_1 " ))
152
+ .startsWithIgnoringCase ("order by var_1 .createdAt + '2024-01-01'" );
151
153
}
152
154
153
155
@ Test // GH-3172
154
156
void arithmetic () {
155
157
156
- // Hibernate representation bugs, should be sum(u.age)
157
- assertThat (renderOrderBy (JpaSort .unsafe ("sum(age)" ), "u" )).startsWithIgnoringCase ("order by sum()" );
158
- assertThat (renderOrderBy (JpaSort .unsafe ("min(age)" ), "u" )).startsWithIgnoringCase ("order by min()" );
159
- assertThat (renderOrderBy (JpaSort .unsafe ("max(age)" ), "u" )).startsWithIgnoringCase ("order by max()" );
160
-
161
- assertThat (renderOrderBy (JpaSort .unsafe ("age" ), "u" )).startsWithIgnoringCase ("order by u.age" );
162
- assertThat (renderOrderBy (JpaSort .unsafe ("age + 1" ), "u" )).startsWithIgnoringCase ("order by u.age + 1" );
163
- assertThat (renderOrderBy (JpaSort .unsafe ("ABS(age) + 1" ), "u" )).startsWithIgnoringCase ("order by abs(u.age) + 1" );
164
-
165
- assertThat (renderOrderBy (JpaSort .unsafe ("neg(active)" ), "u" )).startsWithIgnoringCase ("order by neg(u.active)" );
166
- assertThat (renderOrderBy (JpaSort .unsafe ("abs(age)" ), "u" )).startsWithIgnoringCase ("order by abs(u.age)" );
167
- assertThat (renderOrderBy (JpaSort .unsafe ("ceiling(age)" ), "u" )).startsWithIgnoringCase ("order by ceiling(u.age)" );
168
- assertThat (renderOrderBy (JpaSort .unsafe ("floor(age)" ), "u" )).startsWithIgnoringCase ("order by floor(u.age)" );
169
- assertThat (renderOrderBy (JpaSort .unsafe ("round(age)" ), "u" )).startsWithIgnoringCase ("order by round(u.age)" );
170
-
171
- assertThat (renderOrderBy (JpaSort .unsafe ("prod(age, 1)" ), "u" )).startsWithIgnoringCase ("order by prod(u.age, 1)" );
172
- assertThat (renderOrderBy (JpaSort .unsafe ("prod(age, age)" ), "u" ))
173
- .startsWithIgnoringCase ("order by prod(u.age, u.age)" );
174
-
175
- assertThat (renderOrderBy (JpaSort .unsafe ("diff(age, 1)" ), "u" )).startsWithIgnoringCase ("order by diff(u.age, 1)" );
176
- assertThat (renderOrderBy (JpaSort .unsafe ("quot(age, 1)" ), "u" )).startsWithIgnoringCase ("order by quot(u.age, 1)" );
177
- assertThat (renderOrderBy (JpaSort .unsafe ("mod(age, 1)" ), "u" )).startsWithIgnoringCase ("order by mod(u.age, 1)" );
178
- assertThat (renderOrderBy (JpaSort .unsafe ("sqrt(age)" ), "u" )).startsWithIgnoringCase ("order by sqrt(u.age)" );
179
- assertThat (renderOrderBy (JpaSort .unsafe ("exp(age)" ), "u" )).startsWithIgnoringCase ("order by exp(u.age)" );
180
- assertThat (renderOrderBy (JpaSort .unsafe ("ln(age)" ), "u" )).startsWithIgnoringCase ("order by ln(u.age)" );
158
+ // Hibernate representation bugs, should be sum(var_1.age)
159
+ assertThat (renderOrderBy (JpaSort .unsafe ("sum(age)" ), "var_1" )).startsWithIgnoringCase ("order by sum()" );
160
+ assertThat (renderOrderBy (JpaSort .unsafe ("min(age)" ), "var_1" )).startsWithIgnoringCase ("order by min()" );
161
+ assertThat (renderOrderBy (JpaSort .unsafe ("max(age)" ), "var_1" )).startsWithIgnoringCase ("order by max()" );
162
+
163
+ assertThat (renderOrderBy (JpaSort .unsafe ("age" ), "var_1" )).startsWithIgnoringCase ("order by var_1.age" );
164
+ assertThat (renderOrderBy (JpaSort .unsafe ("age + 1" ), "var_1" )).startsWithIgnoringCase ("order by var_1.age + 1" );
165
+ assertThat (renderOrderBy (JpaSort .unsafe ("ABS(age) + 1" ), "var_1" ))
166
+ .startsWithIgnoringCase ("order by abs(var_1.age) + 1" );
167
+
168
+ assertThat (renderOrderBy (JpaSort .unsafe ("neg(active)" ), "var_1" ))
169
+ .startsWithIgnoringCase ("order by neg(var_1.active)" );
170
+ assertThat (renderOrderBy (JpaSort .unsafe ("abs(age)" ), "var_1" )).startsWithIgnoringCase ("order by abs(var_1.age)" );
171
+ assertThat (renderOrderBy (JpaSort .unsafe ("ceiling(age)" ), "var_1" ))
172
+ .startsWithIgnoringCase ("order by ceiling(var_1.age)" );
173
+ assertThat (renderOrderBy (JpaSort .unsafe ("floor(age)" ), "var_1" ))
174
+ .startsWithIgnoringCase ("order by floor(var_1.age)" );
175
+ assertThat (renderOrderBy (JpaSort .unsafe ("round(age)" ), "var_1" ))
176
+ .startsWithIgnoringCase ("order by round(var_1.age)" );
177
+
178
+ assertThat (renderOrderBy (JpaSort .unsafe ("prod(age, 1)" ), "var_1" ))
179
+ .startsWithIgnoringCase ("order by prod(var_1.age, 1)" );
180
+ assertThat (renderOrderBy (JpaSort .unsafe ("prod(age, age)" ), "var_1" ))
181
+ .startsWithIgnoringCase ("order by prod(var_1.age, var_1.age)" );
182
+
183
+ assertThat (renderOrderBy (JpaSort .unsafe ("diff(age, 1)" ), "var_1" ))
184
+ .startsWithIgnoringCase ("order by diff(var_1.age, 1)" );
185
+ assertThat (renderOrderBy (JpaSort .unsafe ("quot(age, 1)" ), "var_1" ))
186
+ .startsWithIgnoringCase ("order by quot(var_1.age, 1)" );
187
+ assertThat (renderOrderBy (JpaSort .unsafe ("mod(age, 1)" ), "var_1" ))
188
+ .startsWithIgnoringCase ("order by mod(var_1.age, 1)" );
189
+ assertThat (renderOrderBy (JpaSort .unsafe ("sqrt(age)" ), "var_1" )).startsWithIgnoringCase ("order by sqrt(var_1.age)" );
190
+ assertThat (renderOrderBy (JpaSort .unsafe ("exp(age)" ), "var_1" )).startsWithIgnoringCase ("order by exp(var_1.age)" );
191
+ assertThat (renderOrderBy (JpaSort .unsafe ("ln(age)" ), "var_1" )).startsWithIgnoringCase ("order by ln(var_1.age)" );
181
192
}
182
193
183
194
@ Test // GH-3172
184
195
@ Disabled ("HHH-19075" )
185
196
void trim () {
186
- assertThat (renderOrderBy (JpaSort .unsafe ("trim(leading '.' from lastname)" ), "u " ))
197
+ assertThat (renderOrderBy (JpaSort .unsafe ("trim(leading '.' from lastname)" ), "var_1 " ))
187
198
.startsWithIgnoringCase ("order by repeat('a', 5) asc" );
188
199
}
189
200
190
201
@ Test // GH-3172
191
202
void groupedExpression () {
192
- assertThat (renderOrderBy (JpaSort .unsafe ("(lastname)" ), "u " )).startsWithIgnoringCase ("order by u .lastname" );
203
+ assertThat (renderOrderBy (JpaSort .unsafe ("(lastname)" ), "var_1 " )).startsWithIgnoringCase ("order by var_1 .lastname" );
193
204
}
194
205
195
206
@ Test // GH-3172
196
207
void tupleExpression () {
197
- assertThat (renderOrderBy (JpaSort .unsafe ("(firstname, lastname)" ), "u " ))
198
- .startsWithIgnoringCase ("order by u .firstname, u .lastname" );
208
+ assertThat (renderOrderBy (JpaSort .unsafe ("(firstname, lastname)" ), "var_1 " ))
209
+ .startsWithIgnoringCase ("order by var_1 .firstname, var_1 .lastname" );
199
210
}
200
211
201
212
@ Test // GH-3172
202
213
void concat () {
203
- assertThat (renderOrderBy (JpaSort .unsafe ("firstname || lastname" ), "u " ))
204
- .startsWithIgnoringCase ("order by concat(u .firstname, u .lastname)" );
214
+ assertThat (renderOrderBy (JpaSort .unsafe ("firstname || lastname" ), "var_1 " ))
215
+ .startsWithIgnoringCase ("order by concat(var_1 .firstname, var_1 .lastname)" );
205
216
}
206
217
207
218
@ Test // GH-3172
208
219
void pathBased () {
209
220
210
- String query = renderQuery (JpaSort .unsafe ("manager.firstname" ), "u " );
221
+ String query = renderQuery (JpaSort .unsafe ("manager.firstname" ), "var_1 " );
211
222
212
- assertThat (query ).contains ("from org.springframework.data.jpa.domain.sample.User u left join u .manager" );
223
+ assertThat (query ).contains ("from org.springframework.data.jpa.domain.sample.User var_1 left join var_1 .manager" );
213
224
assertThat (query ).contains (".firstname asc nulls last" );
214
225
}
215
226
216
227
@ Test // GH-3172
217
228
void caseSwitch () {
218
229
219
- assertThat (renderOrderBy (JpaSort .unsafe ("case firstname when 'Oliver' then 'A' else firstname end" ), "u " ))
220
- .startsWithIgnoringCase ("order by case u .firstname when 'Oliver' then 'A' else u .firstname end" );
230
+ assertThat (renderOrderBy (JpaSort .unsafe ("case firstname when 'Oliver' then 'A' else firstname end" ), "var_1 " ))
231
+ .startsWithIgnoringCase ("order by case var_1 .firstname when 'Oliver' then 'A' else var_1 .firstname end" );
221
232
222
233
assertThat (renderOrderBy (
223
- JpaSort .unsafe ("case firstname when 'Oliver' then 'A' when 'Joachim' then 'z' else firstname end" ), "u " ))
234
+ JpaSort .unsafe ("case firstname when 'Oliver' then 'A' when 'Joachim' then 'z' else firstname end" ), "var_1 " ))
224
235
.startsWithIgnoringCase (
225
- "order by case u .firstname when 'Oliver' then 'A' when 'Joachim' then 'z' else u .firstname end" );
236
+ "order by case var_1 .firstname when 'Oliver' then 'A' when 'Joachim' then 'z' else var_1 .firstname end" );
226
237
227
- assertThat (renderOrderBy (JpaSort .unsafe ("case when age < 31 then 'A' else firstname end" ), "u " ))
228
- .startsWithIgnoringCase ("order by case when u .age < 31 then 'A' else u .firstname end" );
238
+ assertThat (renderOrderBy (JpaSort .unsafe ("case when age < 31 then 'A' else firstname end" ), "var_1 " ))
239
+ .startsWithIgnoringCase ("order by case when var_1 .age < 31 then 'A' else var_1 .firstname end" );
229
240
230
241
assertThat (
231
- renderOrderBy (JpaSort .unsafe ("case when firstname not in ('Oliver', 'Dave') then 'A' else firstname end" ), "u" ))
242
+ renderOrderBy (JpaSort .unsafe ("case when firstname not in ('Oliver', 'Dave') then 'A' else firstname end" ),
243
+ "var_1" ))
232
244
.startsWithIgnoringCase (
233
- "order by case when u .firstname not in ('Oliver', 'Dave') then 'A' else u .firstname end" );
245
+ "order by case when var_1 .firstname not in ('Oliver', 'Dave') then 'A' else var_1 .firstname end" );
234
246
}
235
247
236
248
private String renderOrderBy (JpaSort sort , String alias ) {
237
249
238
250
String query = renderQuery (sort , alias );
239
-
240
251
String lowerCase = query .toLowerCase (Locale .ROOT );
241
252
int index = lowerCase .indexOf ("order by" );
242
253
0 commit comments