json - Spring 启动 JPA : Storing entity as JSON

标签 json jpa spring-boot

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

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

  @Id
  private String id;

  private Data data;
  ...

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

感谢您的建议。

最佳答案

您可以实现一个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;

关于json - Spring 启动 JPA : Storing entity as JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44681127/

相关文章:

java - 即使我用@Column(unique=true) 标记,也需要放置@Index 吗?

java - 如何将具有一长串通用列的表映射到 JPA 实体

java - Spring Boot 和 Logback 中不同 Classloader 加载的类

java - 使用spring boot时如何配置动态属性?

json - 如何使用aerospike查询语言导入json数据?

javascript - 使用 json 中的值填充输入字段

json - bower 错误 : ENOTFOUND Package bower-bootstrap-accordion not found

python - Scrapy 返回的结果比预期多

mysql - COLLATION 'utf8_general_ci' 对于字符集 'latin1' 无效 - 即使设置了 utf8

java - 已删除的实体实例在 Spring boot 单元测试中仍然存在