Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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
Json 多对多实体在插入相同ID时出错_Json_Spring_Hibernate_Jpa - Fatal编程技术网

Json 多对多实体在插入相同ID时出错

Json 多对多实体在插入相同ID时出错,json,spring,hibernate,jpa,Json,Spring,Hibernate,Jpa,我有两个实体与多对多的关系联系在一起:电影和演员 电影 这是一个restful api,我正在向MovieController发布json。我的json是: { "imdbId": "tt2395424", "actor" : [{"actorId" : "0001"}, {"actorId" : "0002"}] } 这是完美的工作,演员是自动填充。但当我插入一部有相同actorId的新电影时,它会抛出一个错误,即演员已经出现了。我很困惑,因为据我所知,Hibernate会在插入之前

我有两个实体与多对多的关系联系在一起:电影和演员

电影

这是一个restful api,我正在向MovieController发布json。我的json是:

{
  "imdbId": "tt2395424",
  "actor" : [{"actorId" : "0001"}, {"actorId" : "0002"}]
}

这是完美的工作,演员是自动填充。但当我插入一部有相同actorId的新电影时,它会抛出一个错误,即演员已经出现了。我很困惑,因为据我所知,Hibernate会在插入之前比较id,如果不存在,它会插入,否则就映射它。你能告诉我哪里出了问题吗?

问题在于
级联类型。所有
以上演员都是在电影课上设置的。
CascadeType.所做的一切就是对嵌入式实体执行与父实体相同的操作。save操作将尝试在actor表中保存actor,如果actor id已经存在于DB中,则save将抛出错误。尝试对电影实体使用
saveOrUpdate
而不是
save
操作

但是我正在使用persist…当使用persist保存时,saveOrUpdate的另一个替代方法是什么?您可以使用merge而不是persist,这是saveOrUpdate的替代方法。找到更多关于Thank的详细信息。这是可行的,但是关于自动生成ID的任何想法,因为我担心,对于那些我在插入之前做了一些检查的人,我认为这是唯一的解决方案,因为hibernate不检查自动生成的ID。
public class Actor {
    @Id
    private  String actorId;
}
{
  "imdbId": "tt2395424",
  "actor" : [{"actorId" : "0001"}, {"actorId" : "0002"}]
}