如何在com.mysema.query.jpa.impl.JPAQuery中指定一个指定的列?

时间:2016-05-04 08:40:22

标签: spring spring-boot querydsl

我已将用户实体的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());
 }

1 个答案:

答案 0 :(得分:0)

您必须为您的实体创建PathBuilder,以便按名称获取属性路径。像

这样的东西
if(sortColumn != null) {
    PathBuilder<User> userPathBuilder = new PathBuilder<User>(User.class, "user");
    jpaQuery.orderBy(new OrderSpecifier(Order.ASC, userPathBuilder.get(sortColumn)));
}