【问题标题】:Spring Boot JPA: Storing entity as JSONSpring Boot JPA:将实体存储为 JSON
【发布时间】:2017-11-24 15:42:36
【问题描述】:

在我的 Spring Boot 应用程序中,我有这样的实体:

@Entity
@Table(name = "UserENT")
public class User implements Serializable {

  @Id
  private String id;

  private Data data;
  ...

我想实现该对象数据将以json格式存储在数据库中。但在从 DB 中选择时会映射到 Data 对象上。

感谢您的建议。

【问题讨论】:

    标签: json jpa spring-boot


    【解决方案1】:

    您可以实现javax.persistence.AttributeConverter,如:

    public class DataJsonConverter implements AttributeConverter<Data, String> {
    
        private ObjectMapper objectMapper = ...;
    
        @Override
        public String convertToDatabaseColumn(Data data) {
            try {
                return objectMapper.writeValueAsString(data);
            } catch (JsonProcessingException e) {
                throw new RuntimeException("Could not convert to Json", e);
            }
        }
    
        @Override
        public Data convertToEntityAttribute(String json) {
            try {
                return objectMapper.readValue(json, Data.class);
            } catch (IOException e) {
                throw new RuntimeException("Could not convert from Json", e);
            }
        }
    }
    

    然后您可以通过注释您的字段来使用它:

    @Convert(converter = DataJsonConverter.class)
    private Data data;
    

    【讨论】:

      猜你喜欢
      • 2020-07-04
      • 2012-07-16
      • 2019-07-28
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 2020-10-30
      • 2018-08-06
      • 1970-01-01
      相关资源
      最近更新 更多