Кассандра Сохранение данных JSON в текстовом столбце - PullRequest
0 голосов
/ 10 апреля 2019

В Cassandra DB у меня есть имя столбца как custom_extensions, которое может содержать List<AppEncoded>, где AppEncoded - UDT. UDT имеет следующие поля

  type -> TEXT
  code -> TEXT
  value - TEXT

При сохранении данных в БД в поле value можно ожидать ввода как объекта.

  CurrencyTO:
  field -> amount
  field -> Symbol
  field -> formattedAmount

Реализация для сохранения значения столбца в БД выглядит следующим образом:

   JacksonJsonCodec<CurrencyTO> jacksonJsonCodec = new JacksonJsonCodec<>(CurrencyTO.class);
   appEncodedValue.setValue(jacksonJsonCodec.format(CurrencyTO.getValue()));

CurrencyTo расширяет TranserObject, который также имеет следующие атрибуты. Если я вижу в БД, я вижу следующие результаты:

 "value": "'{\"serviceResult\":{\"messagesResult\":[]},\"attributeNames\":[\"amount\",\"isoCode\",\"symbol\",\"decimalValue\",\"formattedAmount\"],\"metadata\":null,\"this\":null,\"amount\":\"45\",\"isoCode\":\"USD\",\"symbol\":\"$\",\"decimalValue\":2.0,\"formattedAmount\":null}'"

В результате были добавлены символы serviceResult, messageResult, metadata и некоторые \.

Ожидаемый результат должен быть похож на следующий в БД

"value": {
  "amount": 90,
  "Symbol": "$",
  "formattedAmount" : "90.00"
}

Ссылка, которую я использовал для реализации: custom_codecs

...