我正在设置一个Spring Boot应用程序,已经设置了实体并连接到数据库,现在我想实现其余API的数据保存。说我有这样的实体
@Entity
class A {
...
private String name;
@OneToOne
private B b;
...
}
,当ID为1的B存在时,我希望能够发送此帖子“ A”创建请求。该请求的结果将是A链接到B。
{
"name":"name Of A"
"B": {
"id":1
}
}
Spring Boot提供的工具可以做到这一点吗,或者这不是传统的做事方式。预先感谢。
答案 0 :(得分:0)
据我所知,没有任何内置的解决方案可以简单地将json映射到要由存储库直接保存的实体。
您需要在其余控制器中将@RequestBody
用作A参数,然后手动使用entityManager.getReference(id_of_b)
来设置A的B实体。然后可以使用repository.save
... >
如果您想做得更好,则需要编写自己的HandlerMethodArgumentResolver
并实现和注册StdDesrializer
中的Jackson
,以确定@OneToOne
或@ManyToOne
关系,然后由杰克逊获取关系的ID,并由entityManager.getReference(id_of_b)
进行设置,如上所述。
这样,生成的实体将准备好由存储库直接保存。