Paging with querydsl predicate and order
Hi,
I am facing a problem where I need to order the paging result in a more complex way than Sort can handle.
I have a situation that reminds a lot of a parent child one where the parent is null when it is the top-level.
Code:
class Entity {
Entity parent;
List<Entity> children;
...
}
The result must be delivered in a list with parents and children ordered like
| Description |
Id |
ParentId |
| 1 |
1 |
NULL |
| 1.1 |
2 |
1 |
| 1.2 |
3 |
1 |
| 2 |
4 |
NULL |
| 2.1 |
5 |
4 |
| 2.2 |
6 |
4 |
| 3 |
7 |
NULL |
| 4 |
8 |
NULL |
| 4.1 |
9 |
8 |
The easiest way writing SQL when just handling just two levels are:
SELECT *
FROM Table
LEFT JOIN Table Parent
ON Table.ParentId = Parent.Id
ORDER BY
COALESCE(Parent.Description, Temp.Description),
CASE WHEN Table.ParentId IS NULL THEN 0 ELSE 1 END,
Table.Description
Now when I am using Spring-data with querydsl I have to ask if this is possible. The reason why I want to use Spring-Data in my query with query-dsl is because the where-clause is complex and that spring-data is offering good support for paging. I found the QueryDslPredicateExecutor but it does not support sorting with OrderSpecifier when using paging.
Am I looking for something that are not implemented or something that is impossible?