在我的项目中,我有两个实体与@OneTomany和@ManyToOne相关。看看这些照片-
我的问题-当我从供应品中删除记录时,也会从产品中删除记录,但我不会这样做。如果我删除CascadeType.All,然后重试此操作,将出现错误
com.mysql.jdbc.exceptions.jdbc4.mysqlintegrityConstraintViolationException:无法删除或更新父行:外键约束失败(shop
.Products
,constraintFK65GU3E053FCNL70HWQ8VP7B2G
外键(supples
)引用supples
(ID
)
如何解决这个问题???
噢,我想了30分钟就解决了。我刚刚在我的delete方法中添加了这段代码
@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);
}
删除父实体时,我还想删除关联的子实体(从数据库中)。我试图在删除时使用级联,如下所示,但我一定做错了什么。 当对父实体对象调用删除时,我收到错误消息:“该实体仍在数据库的其他地方引用”。我可以确认该实体在数据库的其他地方引用的唯一地方是在下面的两个表中(如果我手动从数据库中删除子行,对父实体对象的删除调用工作正常)。在过去的9个小时里,我一直在阅读实体对象并尝试不同的东西。我做错了什么? 这是我的
我的实体。ValidationStep与documentDetail有一对一的关系,documentDetail与documentValidations有一个完全的关系 我的删除查询 父ValidationStep被删除,但是docDetail和documentValidations仍然在数据库中。
我用的是SpringBoot和JPA Hibernate。 我有这些实体: 当我尝试删除父实体(Post)时,所有相关实体注释都保留在数据库中。为什么级联删除不起作用?
我的问题很简单,但找到解决办法却成了一项相当乏味和困难的任务。 我有两个冬眠实体, (或“父”实体)有三个字段, (实体的集合-关系)。 当从的集合中删除时(从对象的集合中删除和通过Dog存储库从数据库中删除),以及更新所有者的地址,然后尝试将更新后的对象保存到数据库中,将引发以下异常: 解决这个问题的一种方法是,在更新集合后,通过使用调用所有者的,获取的新版本,然后更新所有者的地址并将实体保存到
问题内容: 有没有办法做到这一点? 注意:我没有,因此with类不起作用。 问题答案: 您可以通过覆盖 init 方法来更改子类中的字段:
有人有更好的主意吗?