JSONB忽略Jackson序列化包含

hjqgdpho  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(102)

我想持久化到jsonb类型列(com.vladmihalcea. hib. type.json.jsonBinaryType)

@Type(type = "jsonb")
@Column(name = "style", columnDefinition = "jsonb")
private TextStyleJsonB style;

JSON对象相对较大,我不希望它保存带有空值的字段,所以我决定使用自定义对象Map器,在那里我忽略空值。但它没有被应用,所有空值仍然保存到postgres数据库。有什么想法如何摆脱空字段,只保存带有实值的字段吗?
在spring boot中,我有以下应用程序属性

hibernate:
  types:
    jackson:
      object:
        mapper: com.xxx.constructor.configurations.CustomObjectMapperSupplier

自定义对象Map器供应商如下所示:

public class CustomObjectMapperSupplier
    implements ObjectMapperSupplier {

  @Override
  public ObjectMapper get() {
       ObjectMapper mapper = new ObjectMapper();
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);
    mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
    return mapper;
  }
}
r55awzrz

r55awzrz1#

您不应该在应用程序.yml中定义CustomObjectMapperSupplier,而应该建立hibernate.properties具有下列属性的www.example.com档案:

hibernate.types.jackson.object.mapper=com.xxx.constructor.configurations.CustomObjectMapperSupplier

相关问题