File tree 2 files changed +33
-0
lines changed
main/java/org/springframework/data/jpa/repository/query
test/java/org/springframework/data/jpa/repository/query
2 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -276,6 +276,29 @@ public List<JpaQueryParsingToken> visitFromRoot(HqlParser.FromRootContext ctx) {
276
276
return tokens ;
277
277
}
278
278
279
+ @ Override
280
+ public List <JpaQueryParsingToken > visitJoin (HqlParser .JoinContext ctx ) {
281
+
282
+ List <JpaQueryParsingToken > tokens = new ArrayList <>();
283
+
284
+ tokens .addAll (visit (ctx .joinType ()));
285
+ tokens .add (new JpaQueryParsingToken (ctx .JOIN ()));
286
+
287
+ if (!countQuery ) {
288
+ if (ctx .FETCH () != null ) {
289
+ tokens .add (new JpaQueryParsingToken (ctx .FETCH ()));
290
+ }
291
+ }
292
+
293
+ tokens .addAll (visit (ctx .joinTarget ()));
294
+
295
+ if (ctx .joinRestriction () != null ) {
296
+ tokens .addAll (visit (ctx .joinRestriction ()));
297
+ }
298
+
299
+ return tokens ;
300
+ }
301
+
279
302
@ Override
280
303
public List <JpaQueryParsingToken > visitAlias (HqlParser .AliasContext ctx ) {
281
304
Original file line number Diff line number Diff line change @@ -903,6 +903,16 @@ void detectAliasWithCastCorrectly() {
903
903
}
904
904
905
905
906
+ @ Test // GH-2348
907
+ void removeFetchFromJoinsDuringCountQueryCreation () {
908
+
909
+ assertCountQuery ("select u from User u left outer join fetch u.roles r left outer JOIN FETCH u.accounts a" ,
910
+ "select count(u) from User u left outer join u.roles r left outer JOIN u.accounts a" );
911
+
912
+ assertCountQuery ("SELECT DISTINCT b FROM Board b LEFT JOIN FETCH b.comments ORDER BY b.id" ,
913
+ "SELECT count(DISTINCT b) FROM Board b LEFT JOIN b.comments" );
914
+ }
915
+
906
916
private void assertCountQuery (String originalQuery , String countQuery ) {
907
917
assertThat (createCountQueryFor (originalQuery )).isEqualTo (countQuery );
908
918
}
You can’t perform that action at this time.
0 commit comments