error:Found shared references to a collection:

錯誤: 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);
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章