Wrong result metadata when using pagination with Balze-Persistence

415 Views Asked by At

When I fetch all results without pagination result is OK but when use pagination appear problem in pagination metadata

Page p=PageImpl(result.getResults(), PageRequest.of(pageNo, pageSize), result.getTotal()) 
p.getTotalElements() // wrong result
p.result.getTotalPages() // also is wrong

code snippet:-

QOrderAppliedTax qTax = QOrderAppliedTax.orderAppliedTax;
        QOrderDetails qOrderDetails = QOrderDetails.orderDetails;

        NumberExpression<Integer> groupBy = qOrderDetails.createdDate.yearWeek();
        StringPath name = qTax.name;
        NumberExpression<Double> totalTaxValue = qTax.value.sum();
        NumberExpression<Long> ordersCount = qOrderDetails.order.countDistinct();
        DateTimeExpression<Date> fromDate = qOrderDetails.createdDate.min();
        DateTimeExpression<Date> toDate = qOrderDetails.createdDate.max();

        CriteriaBuilderFactory cbf = Criteria.getDefault().createCriteriaBuilderFactory(entityManagerFactory);

        QueryResults<TaxDto> result= new BlazeJPAQuery<>(em, cbf)
                .select(Projections.constructor(TaxDto.class, fromDate, toDate, groupBy, name, totalTaxValue,
                        ordersCount))

                .from(qTax).innerJoin(qOrderDetails).on(qTax.orderDetails.eq(qOrderDetails))

                .groupBy(taxName, groupBy).offset(pageNo * pageSize).limit(pageSize).fetchResults();

the wrong result appears even I used

orderBy(groupBy.asc(), taxName.asc())

exactly the two fields in order by is unique together.

1

There are 1 best solutions below

0
Jan-Willem Gmelig Meyling On

This issue turned out to be a bug which will be resolved in Blaze-Persistence 1.6.3 (expected soon). The patch has already landed in 1.6.3-SNAPSHOT.