gpt4 book ai didi

java - QueryDsl boolean 生成器 : How to create a predicate that compares another field?

转载 作者:太空宇宙 更新时间:2023-11-04 12:47:01 26 4
gpt4 key购买 nike

我有一个简单的例子:查找所有已售完的商品。

项目具有initialQuantity 和soldQuantity 整数字段。(由于某种原因,我需要存储初始数量)

我正在尝试做类似的事情:

builder = new BooleanBuilder();
Predicate predicate = builder.and(item.initialQuantity.eq(item.soldQuantity)).getValue();
Iterable<Item> iterable = itemRepository.findAll(predicate);

但它没有按预期返回。 “.eq()”看起来需要一个整数而不是 Path<>

最佳答案

首先声明它:

JPAQueryFactory query = new JPAQueryFactory(em);
BooleanBuilder booleanBuilder = new BooleanBuilder();
QCreditRequest creditRequest = QCreditRequest.creditRequest;

然后,您可以包含您的业务逻辑,例如:

booleanBuilder.and(creditRequest.creditRequestId.eq(dataRequest.getCreditRequestId()));

if (StringUtils.isNotBlank(dataRequest.getProductId())){
booleanBuilder.and(creditRequest.product.productId.eq(dataRequest.getProductId()));}

最终返回结果,映射到您的 DTO:

return new HashSet<>(
query
.select(
Projections.constructor(
APResponse.class,
creditRequest.creditRequestId,
creditRequest.creditRequestDate,
creditRequest.product.productId,
creditRequest.creditRequestComment))
.from(creditRequest)
.innerJoin(creditRequest.product, product)
.innerJoin(creditRequest.status, creditRequestStatus)
.where(booleanBuilder)
.fetch());

关于java - QueryDsl boolean 生成器 : How to create a predicate that compares another field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36213765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com