如何使用data-jpa更新postgress的jsonb列数据?

问题描述 投票:0回答:1

如何使用 jpa 更新 jsonb postgresql 表列?

当我尝试将列实体定义为 jsonb 时,它会抛出错误

java jpa spring-data-jpa
1个回答
0
投票

我也有类似的问题,可能我已经用这种方式注释了 jsonb 列对应的字段

@Convert(converter = JpaConverters.JsonConverter.class)
@ColumnTransformer(
        write = "?::jsonb"
)
public ObjectNode caratteristiche;

其中 JsonConvert 是自定义转换

public class JpaConverters {
    @Converter(autoApply = true)
    public static class JsonConverter implements AttributeConverter<JsonNode, String> {

        @Nullable
        @Override
        public String convertToDatabaseColumn(JsonNode entityValue) {
            try {
                ObjectMapper mapper = new ObjectMapper();
                return mapper.writeValueAsString(entityValue);
            } catch (JsonProcessingException e) {
                return null;
            }
        }

        @Nullable
        @Override
        public JsonNode convertToEntityAttribute(String databaseValue) {
            try {
                ObjectMapper mapper = new ObjectMapper();
                return mapper.readValue(databaseValue, ObjectNode.class);
            } catch (JsonProcessingException ex){
                return null;
            }
        }


        public static JsonNode toJson(String str){
            var myself =  new JsonConverter();
            return myself.convertToEntityAttribute(str);
        }

    }
}

转换允许将 jsonb 类型映射为来自 jackson 的 Java JsonNode。希望这能有所帮助

© www.soinside.com 2019 - 2024. All rights reserved.