Fix total count for paged specifications with GROUP BY #2376
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hello,
This patch tries to fix using paginated results found through a custom
Specification
that relies on aGROUP BY
clause.I hope the test is clear enough, but just in case, the problem is that since the
getCountQuery
method ofSimpleJpaRepository
takes the exact same query produced by the specification but injects aCOUNT
in theSELECT
, theCOUNT
is done on each group of records so we end up counting them and not the "root" ones.Using
DISTINCT
does the trick here. Actually I can't think of a case where usingDISTINCT
would be problematic so in my mind the patch could be to totally remove theif/else
statement and rely oncountDistinct
anyway but maybe I'm blinded with my application and that's a bit too rash.For the record, the
if/else
statement has been added in a74fadd.Closes #1296.
Closes #2361.
Closes #1858.
Have a nice day.