gpt4 book ai didi

java - 在新实体中保存映射集合

转载 作者:行者123 更新时间:2023-11-30 05:03:16 26 4
gpt4 key购买 nike

我已阅读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,其中包括保留、合并、删除...

级联是告诉 hibernate 在拥有的实体被持久化/合并/删除时如何处理集合元素的设置。

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

关于java - 在新实体中保存映射集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5946964/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com