仅从父实体删除记录

时间:2018-10-18 17:24:16

标签: java spring hibernate

在我的项目中,我有2个与@OneToMany和@ManyToOne相关的实体。 检查这些图片-

enter image description here enter image description here

我的问题 -当我从供应中删除记录时,我也从 Products 中删除记录,但我没有不会。如果我删除 CascadeType.ALL ,然后再次尝试此操作,将出现错误

  

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(shopproducts,CONSTRAINT FK65gu3e053fcnl70hwq8vp7b2g FOREIGN KEY( supplies)参考文献suppliesid))

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

哦,经过30分钟的思考,我解决了它。我只是在删除方法中添加了这段代码

@Override
public void deleteSupply(Long id) {
    Supplies supplies = supplyRepository.findById(id).orElse(null);
    Set<Products> productsList = supplies.getProducts();
    productsList.forEach(products -> products.setSupplies(null));

    supplyRepository.deleteById(id);
}