我已将用户实体的JPA查询编写为
public List<User> findActiveUsers(String sortColumn) {
@Autowired
@PersistenceContext
EntityManager entityManager;
QUser user = QUser.user;
BooleanBuilder builder = new BooleanBuilder();
builder.and(user.status.eq("ACTIVE"));
JPAQuery jpaQuery = new JPAQuery(entityManager).from(user)
.where(builder);
jpaQuery.offset(100);
jpaQuery.limit(20);
//jpaQuery.orderBy([ORDER_SPECIFIER]);
return jpaQuery.list(user);
}
我希望将orderBy作为String
参数添加到函数中,然后根据OrderSpecifier
的要求构建jpaQuery.orderBy
。
有没有办法像这样做?
if(sortColumn ! null) {
jpaQuery.orderBy(user.getColumn(sortColumn).asc());
}
答案 0 :(得分:0)
您必须为您的实体创建PathBuilder,以便按名称获取属性路径。像
这样的东西if(sortColumn != null) {
PathBuilder<User> userPathBuilder = new PathBuilder<User>(User.class, "user");
jpaQuery.orderBy(new OrderSpecifier(Order.ASC, userPathBuilder.get(sortColumn)));
}