Java jpa 字段限制_Java-JPA:僅更新特定字段

我有同樣的問題,正如Deinum先生所指出的,答案是否定的,您不能使用save。 主要問題是Spring Data不知道如何處理null。 是否設置了空值,還是因為需要將其刪除而設置了空值?

現在從您的問題來看,我認為您也有同樣的想法,那就是保存將使我避免手動設置所有更改的值。

那么有可能避免所有的手動映射嗎? 好吧,如果您選擇遵循空值始終表示“未設置”的約定,并且您擁有原始的模型ID,則可以。您可以使用Springs BeanUtils來避免自己進行任何映射。

您可以執行以下操作:

讀取現有對象

使用BeanUtils復制值

保存對象

現在,Spring的BeanUtils實際不支持不復制空值,因此它將覆蓋現有模型對象上未設置空值的任何值。 幸運的是,這里有一個解決方案:

如何使用springframework BeanUtils copyProperties忽略空值?

因此,將所有這些放在一起,最終會得到這樣的結果

@RequestMapping(value = "/rest/user", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE)

@ResponseBody

public ResponseEntity> updateUser(@RequestBody User user) {

User existing = userRepository.read(user.getId());

copyNonNullProperties(user, existing);

userRepository.save(existing);

// ...

}

public static void copyNonNullProperties(Object src, Object target) {

BeanUtils.copyProperties(src, target, getNullPropertyNames(src));

}

public static String[] getNullPropertyNames (Object source) {

final BeanWrapper src = new BeanWrapperImpl(source);

java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();

Set emptyNames = new HashSet();

for(java.beans.PropertyDescriptor pd : pds) {

Object srcValue = src.getPropertyValue(pd.getName());

if (srcValue == null) emptyNames.add(pd.getName());

}

String[] result = new String[emptyNames.size()];

return emptyNames.toArray(result);

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443218.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443218.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443218.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java excel中刪除兩列_Java 插入、隱藏/顯示、刪除Excel行或列

概述操作Excel工作表時,對表格中的行或列數據可執行,包括插入、隱藏、顯示、刪除等在內的多種操作需求,本文將通過Java代碼示例演示每種操作的具體實現方法。文中方法使用了Java Excel類庫(Free Spire.XLS for Java 免費版),可通過…

java屏蔽編譯告警_java-禁止JAXB生成的類上的編譯器警告

這可能是該問題的副本(Avoiding Compiler warnings on code generated by xjc),但是由于我不太了解XJC / JAXB自定義綁定特質,所以我想我可能誤解了所提到的問題.我的問題似乎很簡單-如何將SuppressWarnings(“ all”)批注添加到生成的JAXB類中?我們的項目有0個警告…

Java中number數字類型的轉換_Java下數字類型的轉換 (轉)

Java下數字類型的轉換 (轉)[more]作者:家居貓各種數字類型轉換成字符串型:String s String.valueOf( value); // 其中 value 為任意一種數字類型。字符串型轉換成各種數字類型:String s "169";byte b Byte.parseByte( s );short…

Java0steam_Java學習 - Stream 使用

Java Stream使用這段時間在學數據庫和Java,發現Java的Stream實際上和數據庫的查詢操作非常類似。這里簡單介紹Stream的用法,并和Sql Server中的操作聯系起來。此文為初學Stream所寫,以后對Stream有更深的理解后會重寫當我們使用一個流的時候&…

mysql初始化很慢_mysql初始化報錯

/var/log/mysql.log 日志報錯如上圖所示解決方法:SELinux惹的禍通俗的講就是linux服務器的安全策略解決:臨時關閉:setenforce 0永久關閉需要修改配置文件,重啟機器:修改/etc/selinux/config 文件將SELINUXenforcing改為…

百度java的線程技術_自我提升(基礎技術篇)——java線程簡介

前言:雖然自己平時都在用多線程,也能完成基本的工作需求,但總覺得,還是對線程沒有一個系統的概念,所以,查閱了一些資料,理解那些大神和官方的資料,寫這么一篇關于線程的文章本來想廢…

java調用掃描儀識別文字_Java使用掃描儀讀取文件輸入

示例Scanner scanner null;try {scanner new Scanner(new File("Names.txt"));while (scanner.hasNext()) {System.out.println(scanner.nextLine());}} catch (Exception e) {System.err.println("發生異常!");} finally {if (scanner ! nul…

d3 tip mysql_mysql

字符:char(10)->定長、10個字符寬度。如果右側不夠,則空格補齊,取出來的時候刪除空格。varchar(10)->變長、最多10個字符如:存姓名的時候,沒必要為了那幾個長度去使用varchar,使用定長去存儲會提高效…

java string rt_如何使jvm加載我的java.lang.String而不是rt.jar中的那個

我認真研究了Java類加載器。現在,我想編寫一個與rt.jar中的類之一具有相同的包名稱和類名稱的類。例如,我自己編寫一個java.lang.String類,以及如何打破父級委托模型以使jvm加載我的java.lang.String而不是rt.jar中的類。重新編輯Thx&#xf…

php在線語音,PHP在線語音合成

這篇文章主要介紹了PHP在線語音合成,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下在線語音合成 PHP SDKhttp://yuyin.baidu.com/docs/tts/194PHP SDK文檔簡介Hi,您好,歡迎使用百度語音合成服務。本文檔…

php工廠模式和單例模式,php 設計模式之工廠模式、單例模式、注冊樹模式

php 設計模式之工廠模式、單例模式、注冊樹模式在軟件工程中,創建型設計模式承擔著對象創建的職責,嘗試創建適合程序上下文的對象,對象創建設計模式的產生是由于軟件工程設計的問題,具體說是向設計中增加復雜度,創建型…

php 正則匹配unicode,PHP中正則表達式對UNICODE字符碼的匹配方法

網友ainiaa的問題是PHP代碼如下代碼如下:$words "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSRUVWXYZ!#$%^&*()_-[]\\,./{}|<>?\"你好啊我們";$otherStrpreg_replace("/[chr(128)-chr(256)]/is"," ",$words);ech…

iis7怎么安裝php7,Linux下如何安裝php7

Linux下安裝php7的方法&#xff1a;首先安裝依賴包&#xff0c;并下載解壓安裝包&#xff1b;然后檢查環境的依賴關系&#xff0c;并編譯安裝&#xff1b;接著將【php.ini-production】改名為【php.ini】&#xff1b;最后復制啟動腳本&#xff0c;并啟動PHP即可。Linux下安裝ph…

php長輪詢阻塞,ajax長輪詢時php被阻塞

剛接觸實時通訊這塊&#xff0c;知道用websocket更高效&#xff0c;但我想了解輪詢的實現過程&#xff0c;循序漸進短輪詢用定時器setInterval已經實現了&#xff0c;但長輪詢時后臺進入死循環模塊導致整個網站的php網頁無響應&#xff0c;比如刷新頁面、提交消息都沒法進行。具…

php隱藏路徑ngnix,thinkphp框架在nginx環境下去掉index.php路徑顯示

協助用戶將apache下的一個網站遷移到nginx環境中&#xff0c;結果發現用戶用的ThinkPHP框架做的開發&#xff0c;默認用的pathinfo。這是一個很頭疼的問題&#xff0c;因為nginx不支持pathinfo&#xff0c;貿然一并打開也擔心不安全。于是查詢資料后整理如下&#xff1a;找到ap…

php curl 數據采集 空,PHP curl從網站返回空數組的數據

我想寫一個PHP腳本來從www.snowbird.com/mountain-report/拉雪和其他數據通過LED陣列顯示。我在獲取需要的數據方面遇到麻煩。我似乎無法找到使其工作的方法。我能做這項工作嗎&#xff1f;還是我需要去使用另一種語言&#xff1f;PHP curl從網站返回空數組的數據以下代碼僅返回…

flux react php,Vue的Flux框架之Vuex狀態管理器

學習vue之前&#xff0c;最重要是弄懂兩個概念&#xff0c;一是“what”&#xff0c;要理解vuex是什么&#xff1b;二是“why”,要清楚為什么要用vuex。Vuex是什么&#xff1f;Vuex 類似 React 里面的 Redux 的狀態管理器&#xff0c;用來管理Vue的所有組件狀態。為什么使用Vue…

php config(),php config

PHP 的安裝由于php是一個zip文件(非install版)&#xff0c;安裝較為基本解壓就行。把解壓的 php5.2.1-Win32重命名為 php5。并復制到安裝盤目錄下。例如安裝路徑為 c:\php51 找到php目錄下的 php.ini-dist或 php.ini.recommended文件&#xff0c;重命名為 php.ini,并復制到系統…

functions.php 在哪,functions.php常用函數

在設計WordPress主題時&#xff0c;在functions.php文件里添加一套通用的自定義函數將會大大提高開發效率&#xff0c;這樣就不必每次開發主題時都需先查找然后復制同樣的函數。這里記錄一些常用的函數&#xff0c;方便以后使用&#xff01;給頭部添加feed鏈接WordPress2.8以后…

java基本數據類型存儲,JAVA - 基本數據類型的存儲空間長度

1.整型類型 存儲需求 bit數 取值范圍 備注byte 1字節 1*8 &#xff0d;128&#xff5e;127short 2字節 2*8 &#xff0d;32768&#xff5e;32767int 4字節 4*8 (-2的31次方到2的31次方-1)long 8字節 8*8 (-2的63次方到2的63次方-1) 長整型數值后綴為LJAVA 沒有無符號類型JAVA中…