我正在尝试在 Spring Boot 中将 JSON 对象存储在 MySQL 数据库中。我知道我做错了什么,但我无法弄清楚那是什么,因为我对 Spring 还很陌生。
我有一个休息端点,我在其中获取以下 JSON 对象(通过 HTTP PUT),我需要将其存储在数据库中,以便用户稍后可以获取它(通过 HTTP GET)。
{
"A": {
"Name": "Cat",
"Age": "1"
},
"B": {
"Name": "Dog",
"Age": "2"
},
"C": {
"Name": "Horse",
"Age": "1"
}
}
请注意,在上述情况下,对象 中的 键 数 可能会有所不同,由于该要求,我使用 HashMap
来捕获控制器中的对象。
@RequestMapping(method = RequestMethod.POST)
public String addPostCollection(@RequestBody HashMap<String, Animal> hp) {
hp.forEach((x, y) -> {
postRepository.save(hp.get(x));
});
return "OK";
}
正如您在该方法中看到的,我可以迭代 HashMap
并将每个 Animal
对象保留在数据库中。但我正在寻找一种方法将整个 HashMap
在一条记录中。我读了一些书,他们建议我使用 @ManyToMany
映射。
谁能指出我以不同方式坚持 HashMap
的方向? (或者正在使用 @ManyToMany
唯一正确的方法?)
原文由 Fawzan 发布,翻译遵循 CC BY-SA 4.0 许可协议
Maven 依赖
您需要做的第一件事是在您的项目中设置以下 Hibernate Types Maven 依赖
pom.xml
配置文件:领域模型
假设您有以下实体:
注意
@TypeDef
用于指示 Hibernate 使用 Hibernate Types 项目提供的JsonType
映射JsonNode
对象。测试时间
现在,如果你保存一个实体:
Hibernate 将生成以下 SQL 语句:
你也可以加载它并修改它:
Hibernate 为您处理
UPDATE
声明: