Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何告诉Hibernate检索id而不是插入新记录_Java_Spring Boot_Hibernate - Fatal编程技术网

Java 如何告诉Hibernate检索id而不是插入新记录

Java 如何告诉Hibernate检索id而不是插入新记录,java,spring-boot,hibernate,Java,Spring Boot,Hibernate,我的问题对某些人来说可能是愚蠢的,但我不能告诉Hibernate检索ID而不是插入新记录。我的问题是Spring Boot的POST方法。例如,假设我有3个表:作者、书籍和书籍类型 我发送一个类似这样的JSON来插入我的新书(关系配置为cascascasdetype.ALL): { “书”:{ “名字”:“我的超级书”, “作者”:[ { “姓名”:“朱利安·德斯德” }, { “姓名”:“玛丽亚·格拉斯” } ], “类型”:{ “名称”:“幻想” } } 在我的Book Type表中,Fa

我的问题对某些人来说可能是愚蠢的,但我不能告诉Hibernate检索ID而不是插入新记录。我的问题是Spring Boot的POST方法。例如,假设我有3个表:作者、书籍和书籍类型

我发送一个类似这样的JSON来插入我的新书(关系配置为
cascascasdetype.ALL
):

{
“书”:{
“名字”:“我的超级书”,
“作者”:[
{
“姓名”:“朱利安·德斯德”
},
{
“姓名”:“玛丽亚·格拉斯”
}
],
“类型”:{
“名称”:“幻想”
}
}
在我的Book Type表中,Fantasy类型已经存在。我希望hibernate获取此ID,而不是使用新ID插入新的“Fantasy”记录(由于唯一性约束,这会触发错误)

Book.java

公共类书实现了可序列化{
//其他领域
@多通(级联=级联类型.ALL)
@JoinColumn(name=“BookType\u idBookType”)
私人书型;
}
BookController.java

@PostMapping(“/add”)
公共响应地址簿(@RequestBody Book){
bookbook1=bookService.save(Book);
URI位置=ServletUriComponentsBuilder
.fromCurrentRequest()
.path(“/{id}”)
.buildAndExpand(book1.getId())
.toUri();
返回ResponseEntity.created(location.build();
}

我可能缺少注释。请帮助我。

它基于您在hibernate实体类中定义的主键。 1) 如果主键生成策略是自动的,那么您必须编写代码来获取记录,然后更新记录
2) 如果主键是name,则它将根据数据库中的可用性插入/更新记录

它基于您在hibernate实体类中定义的主键。 1) 如果主键生成策略是自动的,那么您必须编写代码来获取记录,然后更新记录
2) 如果主键是name,那么它将根据数据库中的可用性插入/更新记录

您必须查找已经存在的类型。我认为您不能让它自动执行操作,但是正如您所看到的,我不管理书籍类型的创建。我只保存书籍。确切地说,什么是
书籍类型
?另一个选项卡le?那么你如何从JSON中的
字符串
转换到实体中的
书籍类型
?书籍类型是一个实体。是的,很抱歉,这是一个我复制不好的示例。我编辑了JSON。你必须查找已经存在的类型。我不认为你可以让它自动转换,但正如你所看到的,我不管理c创建图书类型。我只是保存了图书什么是
BookType
?另一个表?那么您如何将JSON中的
字符串
转换为实体中的
BookType
?BookType是一个实体。是的,很抱歉,这是一个我复制不好的示例。我编辑了JSON。主键是一个带有自动策略的IDy、 我不想更新记录,这没有意义。有没有资源来检查是否写入获取记录代码?主键是一个带有自动策略的ID,我不想更新记录,这没有意义。有没有资源来检查是否写入获取记录代码?