簡體   English   中英

使用 spring 引導 json 數組保存到 postgresql 數據 java API

[英]Saving json array into postgresql data using spring boot java API

我的請求 object 和 POJO object 中有一個 Json 數組,我需要將該 jsonarray 字段保存到我的 postgresql 表中的 jsonb 列中。

"productId": "1",
"product":[ 
     {
     "name": "PENCIL",
     "quantity":"5"
     }]

嘗試通過 postman 訪問它時出現異常,出現異常:

類型定義錯誤:[簡單類型,class io.r2dbc.postgresql.codec.Json]; 嵌套異常是 com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of io.r2dbc.postgresql.codec.Json (no Creators, like default constructor, exist): 抽象類型或者需要映射到具體類型具有自定義反序列化器,或在 [Source: (io.netty.buffer.ByteBufInputStream) 處包含其他類型信息\n;

創建一個用於讀取的轉換器和一個用於寫入的轉換器,因此它將在您的類型和 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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM