Cassandra Java Driver преобразует имена полей в нижний регистр
Я использую Cassandra-Driver-Core версии 3.5.1
У меня есть стол в Кассандре. Все поля в таблице имеют верблюжий корпус и созданы в двойных кавычках. Эти поля должны быть в случае верблюда, так как моя схема solr имеет верблюжий корпус, и у нас есть около 80-120 полей.
Но когда я вставляю свои документы json в эту таблицу, используя следующий код:
//jsonData is json document in String
Insert insertQuery = QueryBuilder.insertInto(keySpace, table).json(jsonData);
ResultSet resultSet = session.execute(insertQuery.toString());
Сгенерированный запрос вставки:
INSERT INTO asda_search.GROCERIES JSON '{"catalogName":"some data", .....);
Драйвер cassandra преобразует поле в операторе вставки в нижний регистр, что приводит к исключению ниже:
Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: JSON values map contains unrecognized column: catalogname
В моей таблице имя поля catalogName
Что мне делать, чтобы драйвер не прописывал мои поля в нижнем регистре?
Обновить:
Я знаю, что могу создать запрос, как показано ниже:
QueryBuilder.insertInto(keySpace, table).values(fieldNameList, fieldValueList)
при создании fieldNameList
Я могу добавить кавычки к именам полей.
Любое другое решение?
1 ответ
При создании JSON в такие поля добавлялись экранированные двойные кавычки. Пример:
"\"catalogName\""
.
При использовании Джексона:
@JsonProperty("\"catalogName\"")
Это сработало для меня.