JPA-save()メソッドはnullを溶液にフィールドを更新します

今日、開発に遭遇する問題は、唯一のバックエンドに三つの値を渡し、3つの値のフロントエンドを変更し10のフィールドを、渡すとき、残りのフィールドがnullにデフォルト示すフロントページを作成、更新しますあらゆる分野の他の7つはNULL値になります。

先端の総量の前提の下で、このような問題に対処するために、後端のすべての属性を返すことができません。
解決策:1.書き込みユーティリティメソッド(UpdateUtil)は、すべてのヌルフィールド除去するために使用される
findone(によって更新ID 2によって、元のオブジェクトを検索する)ので、できる
3.は、先端がいない来た空のパラメータコピーBeanUtils.copyNullProperties(オブジェクトソース、オブジェクトのターゲット)によって覆われた元のオブジェクトの属性値(すなわち、の値を変更すること、です)

以下は、ユーティリティメソッドです。

/ ** 
 *(ヌルフィールドに無視して)ツールを使用して更新
 * / 
パブリック クラスUpdateUtil { 

    / ** 
     *すべての属性ではありませんnullのコピー
     * 
     * @param ソース
     * @paramの対象
      * / 
    パブリック 静的な 無効copyNullProperties(ソースオブジェクト、オブジェクトターゲット){ 
        BeanUtils.copyProperties(ソース、ターゲット、getNullField(ソース)); 
    } 

    / ** 
     * GETフィールドが空である属性
     * 
     * @paramの目標
     * @return 
     * / 
    プライベート 静的 =文字列[] getNullField(オブジェクトターゲット){
        BeanWrapper beanWrapper 
                    notNullFieldSet.add(名);新しいBeanWrapperImpl(ターゲット)。
        PropertyDescriptor [] propertyDescriptors = beanWrapper.getPropertyDescriptors()。
        セット <文字列> notNullFieldSet = 新しい HashSetの<> ();
        もし(propertyDescriptors.length> 0 ){
             ため(のPropertyDescriptor P:propertyDescriptors){ 
                文字列名 = p.getName()。
                オブジェクトの値は = beanWrapper.getPropertyValue(名);
                もし(Objects.isNull(値)){ 
                } 
            } 
        } 
        文字列[] notNullField= 新しい文字列[notNullFieldSet.size()]。
        リターンnotNullFieldSet.toArray(notNullField)。
    } 
}

 

おすすめ

転載: www.cnblogs.com/qingmuchuanqi48/p/11986703.html