大家好,我有一個問題我有兩個物體產品和類別我想以相同的形式添加一個類別和多個產品,就像在這個捕獲中一樣

這是我的物體類別
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idcategory;
private String nom;
@JsonManagedReference("category")
@OneToMany(mappedBy = "category", fetch = FetchType.LAZY,cascade = {CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE})
private List<Product> products= new ArrayList<>();
public void add(Product item) {
if (item != null) {
if (products == null) {
products= new ArrayList<>();
}
products.add(item);
item.setCategory(this);
}
}
}
這是物體產品
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idproduct;
private String nom;
private Integer prix;
@JsonBackReference("category")
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "categoryproduct", referencedColumnName = "idcategory")
private Category category;
}
這是我的控制器
@RequestMapping(method = RequestMethod.POST)
public void addcategory(@RequestBody Category c) throws IOException {
List<Product> products = c.getProducts();
products.forEach(item -> c.add(item)
);
categorieRepository.save(c);
}
當我嘗試發布一個類別和多個產品時,它顯示了這個問題
java.util.ConcurrentModificationException\\r\\n\\tat java.base/java.util.ArrayList.forEach(ArrayList.java:1513)\\r\\n\\tat com.example.users.controller.CategoryController.addcategory(CategoryController.java:46)\\r\\n\\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
我想知道我的代碼有什么問題以及如何解決這些問題
uj5u.com熱心網友回復:
您只需要保存 c,因為它已經包含要保存的所有內容。不需要任何回圈。ConcurrentModificationException 是當您在 for 回圈中更改物體時。這里的這個問題會對你有所幫助:
Hibernate 拋出 ConcurrentModificationException
uj5u.com熱心網友回復:
List<Product> products = c.getProducts();
products.forEach(item -> c.add(item));
問題就在這里。您正在嘗試迭代串列并嘗試將專案添加到同一個串列中。這不可能。您可以添加一個臨時串列來添加專案。
uj5u.com熱心網友回復:
我修復了我將 List 更改為 Set 并將 @Data 注釋更改為 @getter 和 @setter 因為我遇到了一個新錯誤(java.util.AbstractSet.hashCode),它現在可以作業了
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/531982.html
上一篇:如何對大串列進行單元測驗?
下一篇:帶有身份驗證彈簧的無限回圈
