Spring Boot JPA:将实体存储为JSON

Tom*_*rik 2 json jpa spring-boot

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

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

  @Id
  private String id;

  private Data data;
  ...
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的建议.

Apo*_*psa 5

你可以实现一个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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

@Convert(converter = DataJsonConverter.class)
private Data data;
Run Code Online (Sandbox Code Playgroud)