【问题标题】:How to orderBy a specified column in com.mysema.query.jpa.impl.JPAQuery?如何按 com.mysema.query.jpa.impl.JPAQuery 中的指定列排序?
【发布时间】:2016-05-04 08:40:21
【问题描述】:

我已经为用户实体编写了 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 参数获取,然后我想根据jpaQuery.orderBy 的要求构建OrderSpecifier

有没有办法做到这一点?

 if(sortColumn ! null) {
     jpaQuery.orderBy(user.getColumn(sortColumn).asc());
 }

【问题讨论】:

    标签: spring spring-boot querydsl


    【解决方案1】:

    您必须为您的实体创建一个 PathBuilder,这将允许按名称获取属性路径。类似的东西

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2015-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多