JPA map JSON column to Java Object

我们在使用jpa的时候,可能某些字段希望存一些比如map的数据类型。

我您可以使用JPA转换器将您的实体映射到数据库。 只需在字段中添加与此类似的注释:

@Convert(converter = JpaConverterJson.class)

然后创建一个转换类(这会转换一个通用的Object,你可能会更具具体场景来定制化这个类):

@Converter(autoApply = true)
public class JpaConverterJson implements AttributeConverter<Object, String> {

  private final static ObjectMapper objectMapper = new ObjectMapper();

  @Override
  public String convertToDatabaseColumn(Object meta) {
    try {
      return objectMapper.writeValueAsString(meta);
    } catch (JsonProcessingException ex) {
      return null;
      // or throw an error
    }
  }

  @Override
  public Object convertToEntityAttribute(String dbData) {
    try {
      return objectMapper.readValue(dbData, Object.class);
    } catch (IOException ex) {
      // logger.error("Unexpected IOEx decoding json from database: " + dbData);
      return null;
    }
  }

}

这样,就可以使用此类将任何对象序列化为表中的json字段。

参考:https://stackoverflow.com/questions/25738569/jpa-map-json-column-to-java-object

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注

Scroll to Top