【发布时间】:2015-01-21 07:07:10
【问题描述】:
让我直奔主题。 我在一个项目中使用 Spring Data JPA 和 QueryDSL,我自己无法弄清楚。
我在可以接受参数的静态方法中有 QueryDSL 谓词,如果参数不正确,它应该返回“空谓词”:
public static BooleanExpression byWhateverId(Long whateverId) {
if(whateverId == null) return [insert magic here];
// if parameter is OK return usual predicate
return QClass.property.whateverId.eq(whateverId);
}
现在我希望能够使用 AND/OR 运算符链接这些谓词:
someRepository.findAll(byWhateverId(someParam).and(bySomethingElseId(1));
这里的问题是,此时我不知道 'someParam' 是否为空(当然我可以检查,但这是很多 IF)。 我也知道我可以使用 BooleanBuilder 类,但这似乎也有很多不需要的代码。
有谁知道可以插入什么而不是“[在此处插入魔法]”??? 或者,也许我在某处遗漏了什么......
谢谢!
【问题讨论】: