【问题标题】:JPAQuery with Spring Pageable带有 Spring Pageable 的 JPAQuery
【发布时间】:2018-12-22 15:00:45
【问题描述】:

我想将 org.springframework.data.domain.Pageablecom.querydsl.jpa.impl.JPAQuery 一起使用。有没有办法或有可靠的解决方法如何使 Pageable 与 JPAQuery 一起使用?

【问题讨论】:

    标签: java spring spring-boot spring-data-jpa querydsl


    【解决方案1】:

    所以我 found 很好,为什么要让他们一起发布完整示例:

    import com.querydsl.core.BooleanBuilder;
    import com.querydsl.core.types.Order;
    import com.querydsl.core.types.OrderSpecifier;
    import com.querydsl.core.types.dsl.BooleanExpression;
    import com.querydsl.core.types.dsl.PathBuilder;
    import com.querydsl.jpa.impl.JPAQuery;
    import org.springframework.data.domain.Pageable;
    import org.springframework.data.domain.Sort;
    import javax.persistence.EntityManager;
    
    public class Example {
        public void example(Pageable pageable, EntityManager em){
            QCustomer qCustomer = QCustomer.customer;
    
            JPAQuery<?> query = new JPAQuery<>(em);
            query.from(qCustomer);
    
            BooleanBuilder builder = new BooleanBuilder();
            builder.and(qCustomer.email.likeIgnoreCase("c@m.c"));
    
            JPAQuery<?> where = query.where(builder);
            // This for loop is making it work with Pagable
            query.offset(pageable.getOffset());
            query.limit(pageable.getPageSize());
            PathBuilder<Customer> entityPath = new PathBuilder<>(Customer.class, "customer");
            for (Sort.Order order : pageable.getSort()) {
                PathBuilder<Object> path = entityPath.get(order.getProperty());
                query.orderBy(new OrderSpecifier(Order.valueOf(order.getDirection().name()), path));
            }
    
            List<Customer> resultList = query.createQuery().getResultList();
        }
    }
    

    【讨论】:

    • 你从哪里得到那个 Pageble 对象?
    • 从 RestController 进来
    猜你喜欢
    • 2014-09-12
    • 1970-01-01
    • 2019-03-08
    • 2020-01-19
    • 1970-01-01
    • 2016-05-26
    • 2020-05-28
    • 2018-10-24
    • 1970-01-01
    相关资源
    最近更新 更多