当前位置: 首页 > 面试题库 >

Hibernate PersistentSet remove()操作不起作用

华展鹏
2023-03-14
问题内容

我的父实体中有一个集合,如下所示:

Class Parent {
 @OneToMany(mappedBy = parent, cascade = CasacadeType.ALL)
 Set<Child> children;
}

Class Child {
 @Column(nullable=false)
 @ManyToOne
 Parent parent;
}

现在发生事件,如果我对其元素之一在Set上执行remove()操作,则实际上并没有将其删除。


问题答案:

您的映射应如下所示:

public class Parent { 
    @OneToMany(mappedBy = parent, cascade = CasacadeType.ALL, orphanRemoval = true) 
    private Set<Child> children = new HashSet<>();

    public void removeChild(Child child) {
        children.remove(child);
        child.setParent(null);
    }
}

public class Child {
    @ManyToOne
    private Parent parent;
}

如本文所述,由于您具有双向关联,因此必须使双方同步。

因此,最好的做法是致电:

parent.removeChild(child);

这样一来,removeChild是要删除Childchildren Set,并设定了Child parent协会null



 类似资料:
  • 我正在我的应用程序中使用ActionSheet。在我的iPhone上它可以工作,但在iPad模拟器上却不行。 这是我的代码: 我的错误是: 由于未捕获的异常“NSGenericeException”而终止应用程序,原因:“您的应用程序已呈现UIAlertControllerStyleActionSheet样式的UIAlertController()。具有此样式的UIAlertController的

  • 我尝试使用如下所示的指针修改BGRA mat: 但这给出不同的输出每一次,有时工作,有时给一个白色空白的图像。我怀疑如果这是由于不连续的数据,谁能帮助? 一个额外的问题,通常我们在访问行之前首先访问二维数组的列,因为它通常更快。但是,我必须使用访问像素。那么,我应该先循环遍历行然后遍历列吗?

  • 代码如下: 运行时,这是错误消息: 错误:不匹配'运算符*'(操作数类型是'std::__cxx11::字符串{aka std::__cxx11::basic_string 如何修复此错误并使程序正确运行?

  • 我有一个工作流,它执行一系列模糊测试,最后计算所有崩溃程序子目录中的文件总数。后来,在另一份工作中,我使用该号码向Slack发送通知。但是,由于某些原因,不会产生任何输出,最重要的是,即使崩溃程序的数量不是零,下一个作业也不会运行! 有人知道我做错了什么吗?谢谢!

  • 因此,我在一个控制器中有一个非常简单的代码片段,在这个代码片段中,我使用从外部文件中获取数据,它工作得很好!但是当我使用时,我会在控制台中得到一个

  • 我不能让非常基本的底拖示例按预期工作。下面的代码应该允许服务并发HTTP请求。实际发生的情况是,只有一个请求被处理,在第一个请求完成之前,其他请求都无法通过。 增加XNIO线程数及其工作线程不会改变任何事情。一个随机的XNIO被分配给请求。然后在调度后分配一个随机工作者。服务器一直处于阻塞状态,直到请求得到服务。