【发布时间】:2021-10-02 14:19:31
【问题描述】:
我的实体:
public class Product extends BaseEntity {
@OneToMany(mappedBy = "product", cascade = CascadeType.ALL)
List<Price> prices;
}
public class Price extends BaseEntity {
BigDecimal price;
@ManyToOne(fetch = FetchType.LAZY)
Product product;
}
我的搜索条件:
public class ProductSearchCriteria {
private Optional<BigDecimal> minP;
private Optional<BigDecimal> maxP;
}
我的规范:
public static Specification<Product> priceBetween(Optional<BigDecimal> minP, Optional<BigDecimal> maxP) {
return (root, query, builder) -> {
//Subquery<Product> sq = query.subquery(Product.class);
//CriteriaQuery<Price> priceCriteriaQuery = builder.createQuery(Price.class);
//Root<Price> priceRoot = sq.from(Price.class);
return minP.map(min -> {
return maxP.map(max ->
//builder
).orElse(null);
}).orElse(null);
};
}
在我的规范中,我试图检索价格介于 (price1, price2) 之间的产品,但无法建立标准
我试过了(但生成的查询是假的):
max-> builder.between(root.get(Product_.PRICES), min, max)
【问题讨论】:
标签: hibernate spring-data-jpa criteria-api