Spring Boot JPA:将实体存储为 JSON

Posted

技术标签:

【中文标题】Spring Boot JPA:将实体存储为 JSON【英文标题】:Spring Boot JPA: Storing entity as 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 对象上。

感谢您的建议。

【问题讨论】:

【参考方案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;

【讨论】:

以上是关于Spring Boot JPA:将实体存储为 JSON的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot JPA 不会将实体附加到会话

如何在spring boot中开发JPA双向实体

在 Spring Boot JPA 中找不到实体列名称

Spring Boot + Spring Batch + Spring JPA

JPA 实体的 Oracle OUT SYS_REFCURSOR 始终为空

如何在Jpa中使用所选实体创建行,RestController Spring Boot