File tree Expand file tree Collapse 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 Expand file tree Collapse file tree 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) {
243243 if (this .alias == null && !isSubquery (ctx )) {
244244 this .alias = tokens .get (tokens .size () - 1 ).getToken ();
245245 }
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+ }
246257 }
247258 } else if (ctx .subquery () != null ) {
248259
Original file line number Diff line number Diff line change 1717
1818import java .util .List ;
1919import java .util .function .Supplier ;
20- import java .util .stream .Collectors ;
2120
2221import org .antlr .v4 .runtime .Token ;
2322import org .antlr .v4 .runtime .tree .TerminalNode ;
@@ -53,6 +52,10 @@ class JpaQueryParsingToken {
5352 public static final JpaQueryParsingToken TOKEN_CLOSE_SQUARE_BRACKET_BRACE = new JpaQueryParsingToken ("]}" );
5453 public static final JpaQueryParsingToken TOKEN_CLOSE_PAREN_BRACE = new JpaQueryParsingToken (")}" );
5554
55+ public static final JpaQueryParsingToken TOKEN_DOUBLE_UNDERSCORE = new JpaQueryParsingToken ("__" );
56+
57+ public static final JpaQueryParsingToken TOKEN_AS = new JpaQueryParsingToken ("AS" );
58+
5659 public static final JpaQueryParsingToken TOKEN_DESC = new JpaQueryParsingToken ("desc" , false );
5760
5861 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() {
798798 assertThat (alias ("select u from User as u left join u.roles as r" )).isEqualTo ("u" );
799799 }
800800
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+
801811 private void assertCountQuery (String originalQuery , String countQuery ) {
802812 assertThat (createCountQueryFor (originalQuery )).isEqualTo (countQuery );
803813 }
You can’t perform that action at this time.
0 commit comments