QueryDSL谓词(数据JPA),它将根据某个规则查询所有记录并对它们进行分组?

QueryDSL谓词(数据JPA),它将根据某个规则查询所有记录并对它们进行分组?,jpa,spring-data-jpa,querydsl,Jpa,Spring Data Jpa,Querydsl,如果我的数据库中有products表,我想查询20种最昂贵的产品 SELECT p FROM Products p ORDER BY p.price DESC LIMIT 20 我如何将其转换为QueryDSL谓词,或者它是否可能?我读过很多教程和其他东西,我见过这样的东西: QProducts p = QProducts.product; JPAQuery query = new JPAQuery(entityManager); query.from(p).orderBy(p.pr

如果我的数据库中有products表,我想查询20种最昂贵的产品

SELECT p FROM Products p ORDER BY p.price DESC LIMIT 20
我如何将其转换为QueryDSL谓词,或者它是否可能?我读过很多教程和其他东西,我见过这样的东西:

QProducts p = QProducts.product;
JPAQuery query = new JPAQuery(entityManager);
     query.from(p).orderBy(p.price.price.asc().limit(20));
@PersistenceContext
protected EntityManager em;
我的程序中没有使用JPA EntityManager,所以我不知道该怎么做。到目前为止,我只做过这样的查询,它们在没有任何EntityManager的情况下工作得很好

public static Predicate productName(String searchTerm){
     QProduct product = QProduct.product;
     return product.name.startsWithIgnoreCase(searchTerm);
}

我只是将该谓词传递给SpringDataJPA提供的方法。我怎样才能像前面的谓词那样解决上面描述的问题呢?

否,orderBy和limit子句不能是谓词的一部分

但是当您使用SpringDataJPA时,您应该在Spring上下文中有一个EntityManager。 尝试将其连接到自定义存储库,如下所示:

QProducts p = QProducts.product;
JPAQuery query = new JPAQuery(entityManager);
     query.from(p).orderBy(p.price.price.asc().limit(20));
@PersistenceContext
protected EntityManager em;