![](/img/trans.png)
[英]QueryDsl BooleanBuilder: How to create a predicate that compares another field?
[英]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.