2
是否有一种方法可以通过querydsl别名对存储库查询结果进行排序?如何按querydsl别名排序
到目前为止,我已经成功地过滤,但对结果进行排序,并显示错误:
org.springframework.data.mapping.PropertyReferenceException: No property username found for type User!
要求:
GET /users?size=1&sort=username,desc
我的休息控制器的方法:
@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);
}
我的资料库:
@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);
}
我也试图实现自己的PageableArgumentResolver
基于QuerydslPredicateArgumentResolver
,但有些方法中使用的有包私有,所以我想也许我在错误的方向