我试图从数据库中获取实体列表,进行更改然后将它们作为新行插入(不更新)。我设法通过自动装配EntityManager并逐个分离对象(也许是批量分离会更好)来做到这一点。但是当我向我的实体添加一个@OneToMany关系并尝试坚持时,我得到了这个:
@OneToMany(cascade = {CascadeType.PERSIST})
@JoinTable(name = "branch",
joinColumns = @JoinColumn(name = "provinceId"),
inverseJoinColumns = @JoinColumn(name = "id")
)
private List<Branch> branches;
但是这没有意义,因为Branch有更多的字段/列:
final List<Province> provinces = provinceRepository.findByVersionId(copyFromVersionId);
for(Province province : provinces){
entityManager.detach(province);
province.setId(null);
province.setVersionId(id);
for(Branch branch : province.getBranches()){
entityManager.detach(branch);
branch.setId(null);
branch.setVersionId(id);
}
}
provinceRepository.save(provinces);
这是我省实体中分支的定义:
{{1}}
这是我尝试插入行的代码:
{{1}}
如何将新分支行保存为查询结果的副本?我在这做错了什么?