Spring Data QueryDSL空谓词谓词链接

Spring Data QueryDSL空谓词谓词链接,第1张

概述让我直截了当.我在一个项目中使用Spring Data JPA和QueryDSL,我自己也无法弄清楚这一点.我在静态方法中有QueryDSL谓词可以接受参数,如果参数不正确,它应该返回“空谓词”:public static BooleanExpression byWhateverId(Long whateverId) { if(whateverId ==

让我直截了当.
我在一个项目中使用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类,但这看起来也像很多不需要的代码.

有谁知道可以插入什么而不是“[在这里插入魔法]”???
或者也许我在某处丢失某些东西……

谢谢!

@H_404_29@最佳答案您可以在byWhateverID和bySomethingElseID中为非匹配谓词返回null,并通过ExpressionUtils.allOf()组合谓词

在你的情况下

Predicate where = ExpressionUtils.allOf(byWhateverID(someParam),bySomethingElseID(1));someRepository.findAll(where);
总结

以上是内存溢出为你收集整理的Spring Data QueryDSL空谓词谓词链接全部内容,希望文章能够帮你解决Spring Data QueryDSL空谓词谓词链接所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1265208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存