当前位置: 首页 > 知识库问答 >
问题:

为什么Hibernate不将子对象的引用设置为父对象?

郝昊东
2023-03-14

考虑类家长:

{
    ...
    @OneToMany(cascade=CascadeType.ALL,mappedBy = "parent")
    Set<Child> children;
    ...
}

和类儿童:

{
    ...
    @ManyToOne
    @JoinColumn(name="parentID")
    Parent parent;
    ...
}

如果我在应用程序中创建一个新的子对象,并将其放入父对象的children字段中,然后持久化父对象,为什么Hibernate不自动更新子对象的Parent字段(以便设置parentID列)?

共有1个答案

邓卓
2023-03-14

因为Hibernate不是一个神奇的工具。它被设计为使用您设计和编写的POJO,并且它不会修改这些POJO的字节码。如果需要,您有责任初始化关联的另一方。

另一个原因是,这就是它必须尊重的JPA规范如何指定它的工作方式。

但没有什么能阻止你找到方法

public void addChild(Child c) {
    this.children.add(c);
    c.parent = this;
}
 类似资料:
  • 问题内容: 我正在向我的朋友解释OOP。我无法回答这个问题。(我有多可耻? 我只是想逃避,因为OOP描绘了现实世界。在现实世界中,父母可以容纳孩子,但孩子不能容纳父母。OOP也是如此。我知道它很愚蠢。:P 为什么此陈述无效? 因为aChild的成员是aParent成员的超集。那为什么孩子不能容纳父母。 问题答案: 正是因为aChild是aParent功能的超集。你可以写: 因为每只狐狸都是动物。但

  • 我想了解将父对象引用设置为子对象的用例。示例:Dog类扩展了Animal类。(请注意,没有接口)我通常会创建一个Dog对象,如下所示: 现在,因为Dog是动物的一个子类,它已经可以访问动物的所有方法和变量。那么,这有什么区别: 请提供一个适当的用例及其使用的代码片段。请不要写关于“多态性”或“接口编码”的理论文章! 代码: 两种情况下的输出相同。那么为什么我们要将父引用设置为子对象呢?

  • 我在问一个很简单的问题,但我有点困惑。 假设我有一个类: 并具有另一个类: 最后是我的Main.java类 如果我将子对象创建为 则对象可以访问变量。 我的问题是: 仅提供父类的变量的访问权限。那么这条线的确切用途是什么?? 并且当它使用动态多态性时,那么为什么在这样做之后,child类的变量是不可访问的

  • 我有以下来自< code>API的数据: 查看 。 由于我需要将其传递给组件,因此,我需要将其转换为以下内容: 我想根据将对象设为其父级的子级。该方案是如果为空,则它是顶级父级,如果长度为2,则它是第一级子级,如果长度为5,则它是第三级子级,然后如果长度为8,则它是第四级子级,然后长度为11,则它是第五级子级。由于第1级的孩子有2个长度的,那么后续的孩子将拥有作为家长加号的。为了更好地理解,请参阅

  • 我需要将一些html转换为PDF。我遇到了IText7,它看起来是一个很好的解决方案。 我正在. net core 3.1中开发 但是,即使使用它的基本实现,我也会遇到一个错误: 每个人都喜欢这个错误: 对象引用未设置为对象的实例。 内部异常为null,唯一的线索是SerializationStackTraceString是: 在iText. IO. FontCache. cctor() 那么,它

  • 既然这个对象(在标题中说明)可以调用子类中的重写方法,为什么它不能调用子类的其他方法?我需要尽可能详细的回答,比如内存组织,JVM中的内部逻辑等。 下面的代码会让你清楚地理解我的问题。