Java QueryDsl BooleanBuilder:如何创建比较列表内容的谓词?

Java QueryDsl BooleanBuilder:如何创建比较列表内容的谓词?,java,sql,querydsl,boolean-expression,Java,Sql,Querydsl,Boolean Expression,我有一个简单的例子:查找所有具有优先级>1且活动=true的类别的项目 项有一个类别列表,每个类别都有一个名为priority的int字段。 我试着做一些类似的事情: builder = new BooleanBuilder(); Predicate predicate = builder.and(item.categories.any(category.priority.goe(1).and(category.active.eq(true)))); Iterable<Item> i

我有一个简单的例子:查找所有具有优先级>1且活动=true的类别的项目

项有一个类别列表,每个类别都有一个名为priority的int字段。 我试着做一些类似的事情:

builder = new BooleanBuilder();
Predicate predicate = builder.and(item.categories.any(category.priority.goe(1).and(category.active.eq(true))));
Iterable<Item> iterable = itemRepository.findAll(predicate);
builder=newbooleanbuilder();
谓词谓词=builder.and(item.categority.any(category.priority.goe(1)and(category.active.eq(true));
Iterable Iterable=itemRepository.findAll(谓词);

但是我找不到正确的方法来使用?有人能提供建议吗?

你可以像下面这样使用
布尔表达式-

public List<Item> getItems() {
        QItem item = QItem.item;
        QCategory category = QCategory.category;
        BooleanExpression booleanExpression = item.categories.contains(
                JPAExpressions.selectFrom(category).
                  where(category.item.eq(item).
                   and(category.priority.eq(1000)
                           .and(category.active.eq(true)))));
        return (List<Item>) itemRepository.findAll(booleanExpression);
    }
公共列表getItems(){
QItem item=QItem.item;
QCategory category=QCategory.category;
BooleanExpression BooleanExpression=item.categories.contains(
JPAExpressions.selectFrom(类别)。
其中(类别、项目、均衡器(项目)。
和(类别优先级eq(1000)
.和(类别.active.eq(真‘‘‘‘));
return(List)itemRepository.findAll(booleanExpression);
}
这在
4.3.1
版本中适用,但在
4.2.1
版本中不适用。请查收