hibernate - 如何从多对多关系实体中删除对象
问题描述
我想删除一个仪表板并检查它是否存在于仪表板组列表中,然后也将其从仪表板组中删除。
实体仪表板和仪表板组具有多对多关系,请检查以下代码:
if(params.id){
def dashboard = Dashboard.get(params.id)
if (dashboard) {
def dashboardGroups = dashboard.dashboardGroups
for(DashboardGroup dashGroup : dashboardGroups){
dashboard.removeFromDashboardGroups(dashGroup)
}
dashboard.delete()
}
解决方案
您应该为此使用 OrphanRemoval。例如。:
public class Dashboard {
@ManyToMany
@Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private Set<DashboardGroup> dashboardGroups = new HashSet<DashboardGroup>();
}
当你尝试:
Dashboard dashboard = entityManager.find(Dashboard.class, 1L);
entityManager.remove(dashboard);
它将删除关联dashboardGroups
的 .
推荐阅读
- docker - 机器人框架 - 如何查看在 shell 中执行的命令的输出?
- json - Postgres - 更新 json 列中的数组元素
- ios - 如何仅为某些 UIViewControllers 启用前台通知?
- javascript - ExtJS GridPanel 整行点击
- c++ - 从二进制流中读取时,将 double 变量的地址转换为 char* 是什么意思?
- mysql - 为多站点 wordpress 使用一个 sql 表 wp_posts 和 wp_postmeta
- r - 如何将数据框列从列表值更改为 r 中的多个列?
- r - 如何避免省略号......在dplyr?
- python - 如何按 4 个元素分组
- javascript - 检测手指何时从触摸板上移开但由于“预测触摸”而滚动仍在发生 - JS