auomatically append "order by id" when paging and query.orderById = true (#1275)

Add ServerConfig.setDefaultOrderById() and query.orderById(boolean) ... to control automatically append "order by id" with paging query
This commit is contained in:
Roland Praml
2018-02-27 10:09:52 +13:00
committed by Rob Bygrave
parent 0cba0664f8
commit a712be2917
11 changed files with 235 additions and 37 deletions
@@ -190,7 +190,6 @@ public class CQueryEngine {
*/
public <T> QueryIterator<T> findIterate(OrmQueryRequest<T> request) {
prepareForPaging(request);
CQuery<T> cquery = queryBuilder.buildQuery(request);
request.setCancelableQuery(cquery);
@@ -326,24 +325,12 @@ public class CQueryEngine {
return historySupport.getSysPeriodLower(rootTableAlias);
}
/**
* deemed to be a be a paging query - check that the order by contains the id
* property to ensure unique row ordering for predicable paging but only in
* case, this is not a distinct query
*/
private <T> void prepareForPaging(OrmQueryRequest<T> request) {
SpiQuery<T> query = request.getQuery();
if (query.checkPagingOrderBy()) {
request.getBeanDescriptor().appendOrderById(query);
}
}
/**
* Find a list/map/set of beans.
*/
<T> BeanCollection<T> findMany(OrmQueryRequest<T> request) {
prepareForPaging(request);
CQuery<T> cquery = queryBuilder.buildQuery(request);
request.setCancelableQuery(cquery);