В 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