Gibt es eine Möglichkeit, Repository Abfrageergebnisse nach querydsl Alias zu sortieren?Wie sortiere ich nach querydsl alias
Bisher habe ich zu filtern geschafft, aber Sortierergebnisse mit einem Fehler:
org.springframework.data.mapping.PropertyReferenceException: No property username found for type User!
Anfrage:
GET /users?size=1&sort=username,desc
meine Ruhe Controller-Methode:
@GetMapping("/users")
public ListResult<User> getUsersInGroup(
@ApiIgnore @QuerydslPredicate(root = User.class) Predicate predicate,
Pageable pageable) {
Page<User> usersInGroup =
userRepository.findByGroup(CurrentUser.getGroup(), predicate, pageable);
return new ListResult<>(usersInGroup);
}
mein Repository:
@Override
default void customize(QuerydslBindings bindings, QUser root) {
bindings.including(root.account.login, root.account.firstName, root.account.lastName,
root.account.phoneNumber, root.account.email, root.account.postalCode, root.account.city,
root.account.address, root.account.language, root.account.presentationAlias);
bindAlias(bindings, root.account.login, "username");
}
default Page<User> findByGroup(Group group, Predicate predicate, Pageable pageable) {
BooleanExpression byGroup = QUser.user.group.eq(group);
BooleanExpression finalPredicate = byGroup.and(predicate);
return findAll(finalPredicate, pageable);
}
default void bindAlias(QuerydslBindings bindings, StringPath path, String alias) {
bindings.bind(path).as(alias).first(StringExpression::likeIgnoreCase);
}
Ich habe auch versucht PageableArgumentResolver
meine eigenen zu implementieren, basierend auf QuerydslPredicateArgumentResolver
, aber einige der Methoden gibt es Paket privat so dachte ich, vielleicht ich in der falschen Richtung gehe