如何按特定字段过滤 PanacheQuery?

How can I filter a PanacheQuery by specific fields?

我想排序、过滤和分页一个PanacheQuery:

    @GET
    public Response listAllPaged(@BeanParam PagedRequest req) {

        // Sorting
        PanacheQuery<MyEntity> all = MyEntity.findAll(Sort.by(req.sortBy, Sort.Direction.Ascending));
        
        // Filtering
        [...] ? I want to keep only results where req.filterBy == req.filterValue
        
        // Paging
        List<MyDTO> list = all
            .page(Page.of(pagedRequest.pageNum, pagedRequest.pageSize))
            .stream()
            .map(myMapper::toDto)
            .collect(Collectors.toList());
            return Response.ok().entity(new PagedResponse<>(all.count(), list)).build();
    }

PanacheQuery 有一个 .filter() 方法,但据我所知,这是用于预定义的 Hibernate 过滤器。

我想用字段值对过滤我的结果,像这样:

all.filter("status", "alive")
all.filter("age", "25")

我找不到很多关于如何实现这一点的示例,而且 Quarkus Panache 文档在这个主题上相当安静。有什么建议吗?

由于 Panache 不支持 JPA Criteria / Predicates,我最终自己构建了查询,例如