У меня есть массив Json в моем объекте запроса и объекте POJO, мне нужно сохранить это поле jsonarray в столбце jsonb в моей таблице postgresql.
"productId": "1",
"product":[
{
"name": "PENCIL",
"quantity":"5"
}]
Я получаю исключение при попытке попасть через почтальона, получая исключение:
Ошибка определения типа: [простой тип, класс io.r2dbc.postgresql.codec.Json]; вложенным исключением является com.fasterxml.jackson.databind.exc.InvalidDefinitionException: невозможно создать экземпляр io.r2dbc.postgresql.codec.Json (не существует создателей, таких как конструктор по умолчанию): абстрактные типы либо должны быть сопоставлены с конкретными типами, иметь пользовательский десериализатор или содержать дополнительный тип информация\n в [Источник: (io.netty.buffer.ByteBufInputStream); л




Создайте конвертер для чтения и конвертер для записи, таким образом он будет конвертировать между вашим типом и Postgres io.r2dbc.postgresql.codec.Json.
@ReadingConverter
@RequiredArgsConstructor
public class JsonToYourTypeConverter implements Converter<Json, YourType > {
private final ObjectMapper objectMapper;
@Override
public YourType convert(Json json) {
}
}
@WritingConverter
@RequiredArgsConstructor
public class YourTypeToJsonConverter implements Converter<YourType, Json > {
private final ObjectMapper objectMapper;
@Override
public Json convert(YourType data) {
}
}
Затем зарегистрируйте свои конвертеры через R2dbcCustomConversions bean.
@Bean
public R2dbcCustomConversions r2dbcCustomConversions(ConnectionFactory connectionFactory, ObjectMapper objectMapper) {
var dialect = DialectResolver.getDialect(connectionFactory);
var converters = List.of(
new JsonToYourTypeConverter(objectMapper),
new YourTypeToJsonConverter(objectMapper),
);
return R2dbcCustomConversions.of(dialect, converters);
}
вы можете попробовать stackoverflow.com/a/70143558/175554 и если это не сработает, не могли бы вы выложить репродукцию на github?