Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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 休眠并保存JsonManagedReference_Java_Json_Spring_Hibernate_Jpa - Fatal编程技术网

Java 休眠并保存JsonManagedReference

Java 休眠并保存JsonManagedReference,java,json,spring,hibernate,jpa,Java,Json,Spring,Hibernate,Jpa,我正在尝试持久化一个具有内部列表的对象。 我必须用@JsonManagedReference注释实体项 使用@JsonBackReference和ItemProperty,以避免无限循环-打破循环 而获取具有项目属性的项目也可以。现在的问题是,当我尝试使用项属性列表持久化新项时,只会持久化该项,而不会持久化任何项属性。有人知道为什么吗?@JsonBackReference/ManagedReference注释是否与之相关 代码: } 在REST控制器中: @PostMapping("/it

我正在尝试持久化一个具有内部列表的对象。 我必须用@JsonManagedReference注释实体项 使用@JsonBackReference和ItemProperty,以避免无限循环-打破循环

而获取具有项目属性的项目也可以。现在的问题是,当我尝试使用项属性列表持久化新项时,只会持久化该项,而不会持久化任何项属性。有人知道为什么吗?@JsonBackReference/ManagedReference注释是否与之相关

代码:

}

在REST控制器中:

   @PostMapping("/items")
Item addItem(@RequestBody Item item) {
    item.setId(0);
    return this.itemService.addItem(item);
}
提前谢谢你的提示


祝你有一个愉快的一天和快乐的编码

您尚未在@OneToMany中声明级联标志。默认情况下,项实体上的任何操作都不会级联到ItemProperty列表。因此,请查看CascadeType枚举并设置要级联到itemsproperty列表的操作。有关级联类型的更多信息,请参见

例如:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "item", orphanRemoval = true)
// @JsonManagedReference is the forward part of reference which gets serialized normally.
@JsonManagedReference
private List<ItemProperty> itemProperties;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“item”,orphanRemoving=true)
//@JsonManagedReference是引用的前向部分,通常被序列化。
@JsonManagedReference
私人财产清单;

如果你想知道这个方法有什么好处,看看这个。

C.Weber的答案是正确的,但是@Transactional annotation也丢失了。

不幸的是,它对我没有帮助。也许我请求的正文不好?{“id”:null,“itemType”:“SKI”,“itemProperties”:[{“id”:1,“itemPropertyDefinition”:{“id”:1,“propertyName”:“model”,“itemType”:“SKI”},“value”:“Head 3.0”}、]}并且在DAO中我只有:@Override public Item addItem(Item Item){Session currentSession=entityManager.unwrap(Session.class);currentSession.saveOrUpdate(Item);return Item;}
   @PostMapping("/items")
Item addItem(@RequestBody Item item) {
    item.setId(0);
    return this.itemService.addItem(item);
}
@OneToMany(cascade = CascadeType.ALL, mappedBy = "item", orphanRemoval = true)
// @JsonManagedReference is the forward part of reference which gets serialized normally.
@JsonManagedReference
private List<ItemProperty> itemProperties;