spring-data-jpa如何处理null

发布于 2022-09-11 18:39:22 字数 553 浏览 17 评论 0

@Query("FROM TABLE_1 WHERE FIEDL1=:f1 and FIELD2=:f2)
public Bean findByIndex(@Param('f1') String field1,@Param('f2')String field2);

这样的写法,当field1或者field2为空的时候,它拼出的sql是FIELD=null,并不正确。

查到stackoverflow有这样一种方式,query语句改为(FROM TABLE_A WHERE (:f1 is null or FIELD=:f1) and (:f2 is null or FIELD2=:f2)),这种方式可以正确得到结果,但是这种方法生成的语句查看执行计划并不能用到索引。

另一种方法是直接改方法名,变为findByField1AndField2。这种方法是正确的,但是我真实的参数比较多,方法名称会太长,无法使用。

有什么办法,当field1为空的时候,它自动生成FIELD1 is null

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

西瓜 2022-09-18 18:39:23

尝试继承 JpaSpecificationExecutor

奢望 2022-09-18 18:39:22

用JPA Criteria API可以做到,不过比较麻烦。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文