Невозможно выполнить запрос из-за следующих ошибок n1ql - PullRequest
1 голос
/ 11 апреля 2020

Я не могу выполнить запрос из-за следующих ошибок 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" }

StackTrace:

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"
      }
    }
  }
]

1 Ответ

1 голос
/ 11 апреля 2020

Похоже, данные пружины сгенерировали неправильный запрос. Ошибка показывает, что вокруг BAGGAGE_COVER есть тики назад. Это должен был быть постоянный объект.

Проверьте правильность создания запроса.

Запрос, приведенный выше, будет работать. Попробуйте в веб-консоли и подтвердите.

Если действительно не нужно точное совпадение, вместо сравнения объектов следует попробовать обязательные поля, чтобы у документа были дополнительные поля, с которыми он может сопоставляться.

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";
...