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 + Spring Batch + Spring JPA