有没有大佬用过 spring-data-r2dbc

2023-03-31 17:49:11 +08:00
 slomo

这是我的代码,不论 ids 列表为不为空,都会报错

    @Query("""
            SELECT SUM(age) FROM user
            where (:ids IS NULL  OR id in (:ids))
    """)
    Mono<Long> sumAges(List<Long> ids);

下面这个当 ids 列表不为空时不报错

    @Query("""
            SELECT SUM(age) FROM user
            where (concat(', :ids,') = '()'  OR id in (:ids))
    """)
    Mono<Long> sumAges(List<Long> ids);

我该怎么改呀,我知道可以在 service 层判断列表空直接返回 Mono.just(0L),但是还有其他许多参数需要判断时呢,总不能疯狂定制方法

1458 次点击
所在节点    Java
4 条回复
RedBeanIce
2023-03-31 18:37:37 +08:00
请贴一下最终打印的 sql ,或许你就明白了。
kwh
2023-03-31 18:48:57 +08:00
:ids IS NULL
能这么写吗? column is NULL 吗?能写 Object is NULL???
slomo
2023-04-03 09:17:39 +08:00
@kwh 问题在于,如果这个参数不是一个列表,而是比如 string ,integer ,long ,这样都是可以的
goalidea
2023-04-09 10:56:31 +08:00
1 楼是正确处理问题的方法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/928825

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX