1. ホーム
  2. ハイバーネート

error:Found shared references to a collection:

2022-03-18 07:54:57

エラーになります。コレクションへの共有参照を発見しました。



理由 BeanUtil.copyProperties() はエンティティービーンをコピーし、エンティティービーンがコレクションプロパティを持つ場合、このメソッドは単に浅いコピーを作成するので、新しくコピーされたエンティティは古いエンティティと同じコレクションを参照し、これは hibernate で許可されていないのでエラーが報告されます。

解決策 を実行した後 コピープロパティ コピー後、新しいコレクションが作成され、元のコレクション要素が追加され、新しくコピーされたエンティティに割り当てられます。

例       



       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);
        }