我想要保存一个包含20个子实体的父实体,以下是我的代码
父类
@OneToMany(mappedBy = "parentId")
private Collection<Child> childCollection;
子类
@JoinColumn(name = "parent_id", referencedColumnName = "parent_id")
@ManyToOne(optional=false)
private Parent parent;
String jsonString = "json string containing parent properties and child collection"
ObjectMapper mapper = new ObjectMapper();
Parent parent = mapper.readValue(jsonString, Parent.class);
public void save(Parent parent) {
Collection<Child> childCollection = new ArrayList<>() ;
for(Child tha : parent.getChildCollection()) {
tha.setParent(parent);
childCollection.add(tha);
}
parent.setChildCollection(childCollection);
getEntityManager().persist(parent);
}
所以如果有20个子表,那么我必须在每个子表中设置父引用,这样我就必须编写20个for循环吗? 可行吗?是否有其他方法或配置,可以自动保留父级和子级?
@JoinTable
来关联单向@OneToMany
。从文档中可以看到:在外键上建立单向一对多关联是不寻常的情况,也不推荐这样做。你应该使用一个连接表来进行这种类型的关联。 - Marko Bonaci