【问题标题】:Unable to execute query due to the following n1ql errors由于以下 n1ql 错误,无法执行查询
【发布时间】:2020-07-23 23:09:39
【问题描述】:

由于以下 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"
      }
    }
  }
]

【问题讨论】:

    标签: couchbase n1ql spring-data-couchbase


    【解决方案1】:

    看起来 spring 数据生成了错误的查询。该错误显示 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";
    

    【讨论】:

      猜你喜欢
      • 2023-02-18
      • 1970-01-01
      • 1970-01-01
      • 2016-04-17
      • 2017-01-23
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多