如果我的数据库中有产品表,并且我想查询20种最昂贵的产品。
SELECT p FROM Products p ORDER BY p.price DESC LIMIT 20
如何将其转换为QueryDSL Predicate或甚至可能?我已经阅读了很多教程和其他内容,我看到过这样的事情:
QProducts p = QProducts.product;
JPAQuery query = new JPAQuery(entityManager);
query.from(p).orderBy(p.price.price.asc().limit(20));
我没有在我的程序中使用JPA EntityManager,所以我不知道该怎么做。到目前为止,我只完成了这样的查询,并且它们在没有任何EntityManager的情况下工作正常。
public static Predicate productName(String searchTerm){
QProduct product = QProduct.product;
return product.name.startsWithIgnoreCase(searchTerm);
}
我只是将Predicate传递给Spring DATA JPA提供的方法。我怎么能像上一个谓词一样解决上面描述的问题?
答案 0 :(得分:0)
不,orderBy和limit子句不能成为Predicate的一部分。
但是当你使用Spring Data JPA时,你应该在Spring上下文中有一个EntityManager。 尝试将其连接到您的自定义存储库,如下所示:
@PersistenceContext
protected EntityManager em;