解决kotlin语言下,Mongodb JPA @Query语句中$or等语句报错问题

本文首发于在下的个人博客:keysking瞎写的东西

问题

近日,在使用kotlin写springboot的项目,数据库使用的是MongoDB,使用JPA进行数据库操作.

以前都是直接写接口函数,让JPA自动生成查询语句,就像这样:

    fun findTemperaturesByGroupIdAndTimeBetween(groupId: String, start: Date, end: Date): List<Temperature>

但是,今天遇见一个需求,想自定义一下查询语句,于是有了下面的代码:

@Query("{'$or':[{temperature:{$gte':37.2}},{'abnormal':true}]}")
fun findDangerTemperatures(temperature: Double): List<Temperature>

@Query注解里写的是正常的MongoDB查询语句,到网上查着别人写的,也确实是这么写,但就是报错

报错

这令我很是迷惑

到网上查了又查,确实这样写啊,别人都是这样写的,没什么问题啊

后来,突然脑中顿悟,在kotlin中的字符串中"$"符号是有作用的,用于引入变量的值

而我查到的都是java的代码,用kotlin写springboot的人本来就少,用mongoDB的就又少,自然网上没有相关的问题.(又或者是只有我这么笨)

于是,代码改成下面的样子,将"$"输出一下,问题就解决了:

@Query("{'${'$'}or':[{temperature:{'${'$'}gte':37.2}},{'abnormal':true}]}")
fun findDangerTemperatures(temperature: Double): List<Temperature>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值