休眠删除父级

Posted

技术标签:

【中文标题】休眠删除父级【英文标题】:Hibernate delete parent 【发布时间】:2018-05-01 22:30:43 【问题描述】:

当我想在 Hibernate 中删除父级时,如果有子级,是否有引发异常的机制?

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "categoryId")
private Category category;

@OneToMany(mappedBy = "category", cascade = CascadeType.ALL)
private List<Product> productList = new ArrayList<>();

如果产品属于该类别,则不删除类别。

【问题讨论】:

【参考方案1】:

为什么 Hibernate 会在删除包含产品的类别时抛出异常?您通过定义 cascade = CascadeType.ALL 来要求 Hibernate 执行此操作。

如果您不希望某个类别在包含某些产品时被删除,您需要自己确认:

if (category.containsProducts()) 
    throw new Exception();

categoryRepository.delete(category);

【讨论】:

以上是关于休眠删除父级的主要内容,如果未能解决你的问题,请参考以下文章

如何在休眠中保存多个表

系统休眠文件可以删除吗 系统休眠文件怎么删除

Windows 7关闭睡眠(休眠)模式和删除休眠文件

休眠一对多关联删除

休眠:分离没有级联到集合

win10怎么把电脑休眠文件