我已阅读documentation并认为我可以执行以下操作。

这样映射我的课程(有效)

@Entity
public class ParentEntity
{
...
    @OneToMany(mappedBy = "parent")
    private List<ChildEntity> children;
...
}

@Entity
public class ChildEntity
{
...
    @Id
    @Column
    private Long id;
...
    @ManyToOne
    @NotFound(action = NotFoundAction.IGNORE)
    @JoinColumn(name = "parent_id")
    private ParentEntity parent;
...
}


..但我希望能够一次性插入到两个表中,并认为这样可以工作:

parent = new ParentEntity();
parent.setChildren(new ArrayList<ChildEntity>());
ChildEntity child = new ChildEntity();
child.setParent(parent);
parent.getChildren().add(child);
session.persist(parent);


谁能告诉我我所缺少的吗?

我需要先保存父母,然后添加孩子并再次保存吗?

谢谢。

最佳答案

您必须添加@OneToMany(cascade=CascadeType.PERSIST)。您还可以使用CascadeType.ALL,其中包括持久,合并,删除...

级联是一种设置,该设置告诉休眠状态,当拥有/合并/删除拥有实体时,该如何处理集合元素。

默认情况下,它对它们不执行任何操作。如果设置了各自的级联类型,则它将为为父级调用的集合元素调用相同的操作。

10-06 06:13