File tree 3 files changed +25
-1
lines changed
main/java/org/springframework/data/jpa/repository/query
test/java/org/springframework/data/jpa/repository/query
3 files changed +25
-1
lines changed Original file line number Diff line number Diff line change @@ -243,6 +243,17 @@ public List<JpaQueryParsingToken> visitFromRoot(HqlParser.FromRootContext ctx) {
243
243
if (this .alias == null && !isSubquery (ctx )) {
244
244
this .alias = tokens .get (tokens .size () - 1 ).getToken ();
245
245
}
246
+ } else {
247
+
248
+ if (countQuery ) {
249
+
250
+ tokens .add (TOKEN_AS );
251
+ tokens .add (TOKEN_DOUBLE_UNDERSCORE );
252
+
253
+ if (this .alias == null && !isSubquery (ctx )) {
254
+ this .alias = TOKEN_DOUBLE_UNDERSCORE .getToken ();
255
+ }
256
+ }
246
257
}
247
258
} else if (ctx .subquery () != null ) {
248
259
Original file line number Diff line number Diff line change 17
17
18
18
import java .util .List ;
19
19
import java .util .function .Supplier ;
20
- import java .util .stream .Collectors ;
21
20
22
21
import org .antlr .v4 .runtime .Token ;
23
22
import org .antlr .v4 .runtime .tree .TerminalNode ;
@@ -53,6 +52,10 @@ class JpaQueryParsingToken {
53
52
public static final JpaQueryParsingToken TOKEN_CLOSE_SQUARE_BRACKET_BRACE = new JpaQueryParsingToken ("]}" );
54
53
public static final JpaQueryParsingToken TOKEN_CLOSE_PAREN_BRACE = new JpaQueryParsingToken (")}" );
55
54
55
+ public static final JpaQueryParsingToken TOKEN_DOUBLE_UNDERSCORE = new JpaQueryParsingToken ("__" );
56
+
57
+ public static final JpaQueryParsingToken TOKEN_AS = new JpaQueryParsingToken ("AS" );
58
+
56
59
public static final JpaQueryParsingToken TOKEN_DESC = new JpaQueryParsingToken ("desc" , false );
57
60
58
61
public static final JpaQueryParsingToken TOKEN_ASC = new JpaQueryParsingToken ("asc" , false );
Original file line number Diff line number Diff line change @@ -798,6 +798,16 @@ void queryParserPicksCorrectAliasAmidstMultipleAlises() {
798
798
assertThat (alias ("select u from User as u left join u.roles as r" )).isEqualTo ("u" );
799
799
}
800
800
801
+ @ Test // GH-2032
802
+ void countQueryShouldWorkEvenWithoutExplicitAlias () {
803
+
804
+ assertCountQuery ("FROM BookError WHERE portal = :portal" ,
805
+ "select count(__) FROM BookError AS __ WHERE portal = :portal" );
806
+
807
+ assertCountQuery ("FROM BookError b WHERE portal = :portal" ,
808
+ "select count(b) FROM BookError b WHERE portal = :portal" );
809
+ }
810
+
801
811
private void assertCountQuery (String originalQuery , String countQuery ) {
802
812
assertThat (createCountQueryFor (originalQuery )).isEqualTo (countQuery );
803
813
}
You can’t perform that action at this time.
0 commit comments