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 .assertThatThrownBy ;
18
+ import static org .assertj .core .api .Assertions .*;
21
19
22
20
import java .util .Arrays ;
23
21
import java .util .Collections ;
@@ -229,7 +227,12 @@ void createsCountQueryForNestedReferenceCorrectly() {
229
227
230
228
@ Test // DATAJPA-420
231
229
void createsCountQueryForScalarSelects () {
232
- assertCountQuery ("select p.lastname,p.firstname from Person p" , "select count(p) from Person p" , true );
230
+ assertCountQuery ("select p.lastname,p.firstname from Person p" , "select count(p) from Person p" , false );
231
+ }
232
+
233
+ @ Test // DATAJPA-420
234
+ void createsCountQueryForNativeScalarSelects () {
235
+ assertCountQuery ("select p.lastname,p.firstname from Person p" , "select count(1) from Person p" , true );
233
236
}
234
237
235
238
@ Test // DATAJPA-456
@@ -490,7 +493,7 @@ void createCountQuerySupportsWhitespaceCharacters() {
490
493
" order by user.name\n " , true );
491
494
492
495
assertThat (getEnhancer (query ).createCountQueryFor ())
493
- .isEqualToIgnoringCase ("select count(user ) from User user where user.age = 18" );
496
+ .isEqualToIgnoringCase ("select count(1 ) from User user where user.age = 18" );
494
497
}
495
498
496
499
@ Test
@@ -503,7 +506,7 @@ void createCountQuerySupportsLineBreaksInSelectClause() {
503
506
" order\n by\n user.name\n " , true );
504
507
505
508
assertThat (getEnhancer (query ).createCountQueryFor ())
506
- .isEqualToIgnoringCase ("select count(user ) from User user where user.age = 18" );
509
+ .isEqualToIgnoringCase ("select count(1 ) from User user where user.age = 18" );
507
510
}
508
511
509
512
@ Test // DATAJPA-1061
@@ -724,17 +727,17 @@ void countQueryUsesCorrectVariable() {
724
727
725
728
QueryEnhancer queryEnhancer = getEnhancer (nativeQuery );
726
729
String countQueryFor = queryEnhancer .createCountQueryFor ();
727
- assertThat (countQueryFor ).isEqualTo ("SELECT count(* ) FROM User WHERE created_at > $1" );
730
+ assertThat (countQueryFor ).isEqualTo ("SELECT count(1 ) FROM User WHERE created_at > $1" );
728
731
729
732
nativeQuery = new StringQuery ("SELECT * FROM (select * from test) " , true );
730
733
queryEnhancer = getEnhancer (nativeQuery );
731
734
countQueryFor = queryEnhancer .createCountQueryFor ();
732
- assertThat (countQueryFor ).isEqualTo ("SELECT count(* ) FROM (SELECT * FROM test)" );
735
+ assertThat (countQueryFor ).isEqualTo ("SELECT count(1 ) FROM (SELECT * FROM test)" );
733
736
734
737
nativeQuery = new StringQuery ("SELECT * FROM (select * from test) as test" , true );
735
738
queryEnhancer = getEnhancer (nativeQuery );
736
739
countQueryFor = queryEnhancer .createCountQueryFor ();
737
- assertThat (countQueryFor ).isEqualTo ("SELECT count(test ) FROM (SELECT * FROM test) AS test" );
740
+ assertThat (countQueryFor ).isEqualTo ("SELECT count(1 ) FROM (SELECT * FROM test) AS test" );
738
741
}
739
742
740
743
@ Test // GH-2555
@@ -864,7 +867,7 @@ void withStatementsWorksWithJSQLParser() {
864
867
865
868
assertThat (queryEnhancer .createCountQueryFor ()).isEqualToIgnoringCase (
866
869
"with sample_data (day, value) AS (VALUES ((0, 13), (1, 12), (2, 15), (3, 4), (4, 8), (5, 16)))\n "
867
- + "SELECT count(a ) FROM sample_data AS a" );
870
+ + "SELECT count(1 ) FROM sample_data AS a" );
868
871
assertThat (queryEnhancer .applySorting (Sort .by ("day" ).descending ())).endsWith ("ORDER BY a.day DESC" );
869
872
assertThat (queryEnhancer .getJoinAliases ()).isEmpty ();
870
873
assertThat (queryEnhancer .detectAlias ()).isEqualToIgnoringCase ("a" );
@@ -887,7 +890,7 @@ void multipleWithStatementsWorksWithJSQLParser() {
887
890
888
891
assertThat (queryEnhancer .createCountQueryFor ()).isEqualToIgnoringCase (
889
892
"with sample_data (day, value) AS (VALUES ((0, 13), (1, 12), (2, 15), (3, 4), (4, 8), (5, 16))),test2 AS (VALUES (1, 2, 3))\n "
890
- + "SELECT count(a ) FROM sample_data AS a" );
893
+ + "SELECT count(1 ) FROM sample_data AS a" );
891
894
assertThat (queryEnhancer .applySorting (Sort .by ("day" ).descending ())).endsWith ("ORDER BY a.day DESC" );
892
895
assertThat (queryEnhancer .getJoinAliases ()).isEmpty ();
893
896
assertThat (queryEnhancer .detectAlias ()).isEqualToIgnoringCase ("a" );
@@ -985,4 +988,5 @@ private static void assertCountQuery(StringQuery originalQuery, String countQuer
985
988
private static QueryEnhancer getEnhancer (DeclaredQuery query ) {
986
989
return QueryEnhancerFactory .forQuery (query );
987
990
}
991
+
988
992
}
0 commit comments