Java 在新实体中保存映射的集合

Java 在新实体中保存映射的集合,java,hibernate,one-to-many,Java,Hibernate,One To Many,我读了这本书,认为我能做到以下几点 按原样映射我的类(这是可行的) @实体 公共类父实体 { ... @OneToMany(mappedBy=“家长”) 私人名单儿童; ... } @实体 公共类子实体 { ... @身份证 @纵队 私人长id; ... @许多酮 @NotFound(action=NotFoundAction.IGNORE) @JoinColumn(name=“parent\u id”) 私人父母实体父母; ... } 。。但我希望能够一次插入到两个表中,并认为这会起作用:

我读了这本书,认为我能做到以下几点

按原样映射我的类(这是可行的)

@实体
公共类父实体
{
...
@OneToMany(mappedBy=“家长”)
私人名单儿童;
...
}
@实体
公共类子实体
{
...
@身份证
@纵队
私人长id;
...
@许多酮
@NotFound(action=NotFoundAction.IGNORE)
@JoinColumn(name=“parent\u id”)
私人父母实体父母;
...
}
。。但我希望能够一次插入到两个表中,并认为这会起作用:

parent = new ParentEntity();
parent.setChildren(new ArrayList<ChildEntity>());
ChildEntity child = new ChildEntity();
child.setParent(parent);
parent.getChildren().add(child);
session.persist(parent);
parent=newparententity();
setChildren(新的ArrayList());
ChildEntity child=新的ChildEntity();
setParent(家长);
parent.getChildren().add(child);
会话。持续(家长);
谁能告诉我我错过了什么

我是否需要先保存父项,然后添加子项并再次保存


谢谢。

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

级联是一种设置,它告诉hibernate在持久化/合并/删除所属实体时如何处理集合元素

默认情况下,它对它们不做任何处理。如果设置了相应的级联类型,则会对父级调用的集合元素调用相同的操作

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