如何使用JPA和Hibernate将MySQL JSON列映射到Java实体属性
发布于 2021-01-30 17:18:04
我将MySQL列声明为 JSON 类型,并且在使用Jpa / Hibernate映射时遇到问题。我在后端使用Spring Boot。
这是我的代码的一小部分:
@Entity
@Table(name = "some_table_name")
public class MyCustomEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "json_value")
private JSONArray jsonValue;
该程序返回一个错误,并告诉我无法映射该列。
在mysql表中,该列定义为:
json_value JSON NOT NULL;
关注者
0
被浏览
110
1 个回答
-
我更喜欢这样:
- 创建从Map到String的转换器(属性转换器),反之亦然。
- 使用Map映射域(实体)类中的mysql JSON列类型
代码在下面。
JsonToMapConverted.java
@Converter public class JsonToMapConverter implements AttributeConverter<String, Map<String, Object>> { private static final Logger LOGGER = LoggerFactory.getLogger(JsonToMapConverter.class); @Override @SuppressWarnings("unchecked") public Map<String, Object> convertToDatabaseColumn(String attribute) { if (attribute == null) { return new HashMap<>(); } try { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.readValue(attribute, HashMap.class); } catch (IOException e) { LOGGER.error("Convert error while trying to convert string(JSON) to map data structure."); } return new HashMap<>(); } @Override public String convertToEntityAttribute(Map<String, Object> dbData) { try { ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.writeValueAsString(dbData); } catch (JsonProcessingException e) { LOGGER.error("Could not convert map to json string."); return null; } } }
域(实体映射)类的一部分
... @Column(name = "meta_data", columnDefinition = "json") @Convert(attributeName = "data", converter = JsonToMapConverter.class) private Map<String, Object> metaData = new HashMap<>(); ...
该解决方案非常适合我。
推荐阅读
-
将PostgreSQL JSON列映射到Hibernate实体属性
2021-01-31 关注 0 浏览91 1答案
-
如何使用JPA将映射JSON列映射到Java对象
2021-02-02 关注 0 浏览99 1答案
-
如何使用JPA / Hibernate批注将MySQL char(n)列映射到实例变量?
2021-02-01 关注 0 浏览94 1答案
-
将JSON对象映射到Hibernate实体
2021-02-01 关注 0 浏览135 1答案
-
将JPA实体的JSON字符串列自动映射到Java对象
2021-01-31 关注 0 浏览229 1答案
-
如何将Java中的二维矩阵映射到Hibernate / JPA?
2021-02-01 关注 0 浏览89 1答案
-
使用JavaScriptSerializer将实体映射到JSON
2021-01-31 关注 0 浏览127 1答案
-
将PostgreSQL JSON列映射到Hibernate值类型
2021-02-01 关注 0 浏览114 1答案
-
如何使用JPA和Hibernate映射计算的属性
2021-02-02 关注 0 浏览98 1答案
-
如何使用JPA和Hibernate映射计算的属性
2021-02-01 关注 0 浏览113 1答案