couchbase - 由于以下 n1ql 错误,无法执行查询
问题描述
由于以下 n1ql 错误,我无法执行查询:
存储库查询:
public ClientMatrixFactorPopUp findBySupportedValuesAndRequestId(SortedMap supportedValues,Long requestId);
预期 N1QL:
SELECT * FROM b_factor
WHERE _class = "com.intervest.price.oxygen.model.ClientMatrixFactorPopUp" and requestId=21
and supportedValues= { "BAGGAGE_COVER": "0", "CANCELLATION_COVER": "0", "GADGET_COVER": "2", "TRIP_EXCESS": "250" }
堆栈跟踪:
Unable to execute query due to the following n1ql errors:
{"msg":"Object member missing name or value: (`BAGGAGE_COVER` = 500) - at , \n Object member missing name or value: (`CANCELLATION_COVER` = 500) - at , \n Object member missing name or value: (`GADGET_COVER` = 1) - at , \n Object member missing name or value: (`TRIP_EXCESS` = 50) - at }","code":3000}
[
{
"b_factor": {
"_class": "com.intervest.price.oxygen.model.ClientMatrixFactorPopUp",
"requestId": 21,
results": [...],
"supportedValues":{
"BAGGAGE_COVER": "0",
"CANCELLATION_COVER":"0",
"GADGET_COVER":"2",
"TRIP_EXCESS":"250"
}
}
}
]
解决方案
看起来弹簧数据生成了错误的查询。该错误显示 BAGGAGE_COVER 周围有倒勾。它应该是常量对象。
检查查询生成权。
上面提供的查询将起作用。在 Web 控制台中尝试并验证。
除非真的需要完全匹配,而不是对象比较应该尝试必填字段,以便该文档具有可以匹配的额外字段。
SELECT * FROM b_factor
WHERE _class = "com.intervest.price.oxygen.model.ClientMatrixFactorPopUp"
AND requestId = 21
AND supportedValues.BAGGAGE_COVER = "0"
AND supportedValues.CANCELLATION_COVER = "0"
AND supportedValues.GADGET_COVER = "2"
AND supportedValues.TRIP_EXCESS = "250";
推荐阅读
- php - PHP sftp - 我可以获得下载/上传速度吗?
- python - 如何使用批处理生成器为 python 中的音频信号生成噪声数据?
- javascript - 在 Facebook 等按钮中设置头像图像的样式?
- discord.js - 邀请命令离开 discord.js
- python - 当预测值是连续的而实际值是离散的时,如何找到准确性?
- ios - 当应用程序处于前台时(颤振)在 iOS 中接收 fcm
- python - 当 aiohttp.ClientSession 异步失败时如何重试任务
- winapi - 我需要通过挂钩一些 Windows API 来防止一些黑客修改游戏内存
- python-3.x - AppDynamics 的 Rest API 调用问题
- jacoco-maven-plugin - 未能执行目标 org.jacoco:jacoco-maven-plugin:0.8.5:report-integration