org.apache.commons.beanutils.ConversionException: No value specified
阿新 • • 發佈:2020-11-30
背景
框架底層用BeanUtils.copyProperty工具封裝物件
BeanUtils.copyProperty(obj, fieldName, objval);
之前用String一直沒問題,後來欄位多用IDEA的根據表自動生成物件的功能,生成內容如下。
問題
生成的POJO中,資料庫DATE型別對應實體中java.sql.Date型別,DATETIME對應實體中java.sql.Timestamp型別。
只要POJO的欄位為 java.sql.Date時間等非內建物件時,如果物件為null則會出現org.apache.commons.beanutils.ConversionException: No value specified異常。
解決方案
1.欄位型別改為String
2.註冊轉換器
在呼叫BeanUtils.copyProperty()前註冊轉換器,註冊後sql.date/sql.Timestamp欄位型別即可允許為空。
// 註冊sql.date/sql.Timestamp的轉換器,即允許BeanUtils.copyProperty時的源目標的sql型別的值允許為空 ConvertUtils.register(new org.apache.commons.beanutils.converters.SqlDateConverter(null), java.sql.Date.class); ConvertUtils.register(new org.apache.commons.beanutils.converters.SqlTimestampConverter(null), java.sql.Timestamp.class); BeanUtils.copyProperty(obj, fieldName, objval);