錯誤: Found shared references to a collection:
原因:BeanUtil.copyProperties()的方式複製一個實體bean,如果這個實體bean有一個集合屬性,因爲這個方法只是做了一個淺拷貝,所以新拷貝的實體跟舊的實體引用了同一個集合,而這個在hibernate中是不允許的,所以報錯。
解決:在進行copyProperties拷貝後,新建一個集合,將原來的集合元素添加進去,並賦值給新拷貝的實體。
例:
BeanUtils.copyProperties(oldApplications, newApplications);
Set<ApplicationsUniv> appSet = oldApplications.getApplicationsunivs();
if(null!=appSet || !appSet.isEmpty()){
Set<ApplicationsUniv> newappSet = new HashSet<ApplicationsUniv>() ;
for(ApplicationsUniv appuniv : appSet){
newappSet.add(appuniv);
}
newApplications.setApplicationsunivs(newappSet);
}