使用JPA Hibernate自动保存子对象

我在父子表之间存在一对多关系。在父对象中,我有一个

List<Child> setChildren(List<Child> childs)

我在子表中也有一个外键。此外键是引用数据库中父行的ID。因此,在我的数据库配置中,此外键不能为NULL。同样,此外键也是父表中的主键。

所以我的问题是如何通过执行以下操作来自动保存子对象:

session.save(parent);

我尝试了上面的方法,但是我收到一个数据库错误,抱怨Child表中的外键字段不能为NULL。是否可以告诉JPA自动将此外键设置为Child对象,以便它可以自动保存child对象?

提前致谢。

回答:

我尝试了上面的方法,但是我收到一个数据库错误,抱怨Child表中的外键字段不能为NULL。是否可以告诉JPA自动将此外键设置为Child对象,以便它可以自动保存child对象?

好吧,这里有两件事。

首先,您需要级联保存操作(但是我的理解是您正在执行此操作,否则在“子”表的插入过程中不会收到FK约束违规)

其次,您可能具有双向关联,并且我认为您没有正确设置“链接双方”。您应该做这样的事情:

Parent parent = new Parent();

...

Child c1 = new Child();

...

c1.setParent(parent);

List<Child> children = new ArrayList<Child>();

children.add(c1);

parent.setChildren(children);

session.save(parent);

一种常见的模式是使用链接管理方法:

@Entity

public class Parent {

@Id private Long id;

@OneToMany(mappedBy="parent")

private List<Child> children = new ArrayList<Child>();

...

protected void setChildren(List<Child> children) {

this.children = children;

}

public void addToChildren(Child child) {

child.setParent(this);

this.children.add(child);

}

}

代码变成:

Parent parent = new Parent();

...

Child c1 = new Child();

...

parent.addToChildren(c1);

session.save(parent);

参考文献

  • Hibernate Core参考指南

    • 1.2.6。工作双向链接

以上是 使用JPA Hibernate自动保存子对象 的全部内容, 来源链接: utcz.com/qa/418035.html

回到顶部