org.apache.commons.beanutils.ConversionException: No value specified详解编程语言

背景

框架底层用BeanUtils.copyProperty工具封装对象

BeanUtils.copyProperty(obj, fieldName, objval); 

之前用String一直没问题,后来字段多用IDEA的根据表自动生成对象的功能,生成内容如下。

org.apache.commons.beanutils.ConversionException: No value specified详解编程语言

问题

生成的POJO中,数据库DATE类型对应实体中java.sql.Date类型,DATETIME对应实体中java.sql.Timestamp类型。

org.apache.commons.beanutils.ConversionException: No value specified详解编程语言

只要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); 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17764.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论