簡體   English   中英

QueryDsl BooleanBuilder:如何創建一個比較列表內容的謂詞?

[英]QueryDsl BooleanBuilder: How to create a predicate that compares contents of list?

我有一個簡單的例子:查找所有類別優先級> 1且活動=真的項目。

Item 有一個類別列表,每個類別都有一個名為 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);

但我找不到正確的使用方法? 有人可以建議嗎?

您可以像下面這樣使用BooleanExpression -

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);
    }

這適用於我的版本4.3.1但不適用於4.2.1 使用 springboot 檢查此示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM