使用apache的BeanUtils,一个很诡异的问题

问题描述

public class MyBeanUtils extends org.apache.commons.beanutils.BeanUtils {public static void copyBeanNotNull2Bean(Object databean,Object tobean)throws Exception { PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(databean); for (int i = 0; i < origDescriptors.length; i++) { String name = origDescriptors[i].getName();// String type = origDescriptors[i].getPropertyType().toString(); if ("class".equals(name)) { continue; // No point in trying to set an object's class } if (PropertyUtils.isReadable(databean, name) && PropertyUtils.isWriteable(tobean, name)) { try { Object value = PropertyUtils.getSimpleProperty(databean, name); if(value!=null){ copyProperty(tobean, name, value); } } catch (java.lang.IllegalArgumentException ie) { logger.error(ie,ie); // Should not happen } catch (Exception e) { logger.error(e,e); // Should not happen } } } }} 使用这段代码进行javabean的复制,并且srcBean为null的字段,不进行复制。 这段代码测试环境是正常的,在生产环境下,运行一段时间后(大概有1个月的样子),就会出现很诡异的问题,javaBean里面Integer,Long等类型的 复制后字段变成null了(源javaBean和目标javaBean该字段都不不为空的情况下)。 正在持续监测中... 注:copyProperty 方法是继承于org.apache.commons.beanutils.BeanUtils 问题补充:重启应用后又正常了

解决方案

javabean的复制最好需要考虑下java基本类型的默认值,不然的话很有可能以默认值给覆盖掉了。要不就利用jdk1.5+的自动装箱拆箱,在javabean中定义类型均为Integer,Long Double等类型,这样就可以用null来判断了

时间: 2024-10-25 20:23:58

使用apache的BeanUtils,一个很诡异的问题的相关文章

html-麻烦帮忙看一个很诡异的CSS高度设置的问题

问题描述 麻烦帮忙看一个很诡异的CSS高度设置的问题 我有一个html文件,把一个div元素高度设置为45px,如果把文件直接拖到浏览器,这个div是正常的45px.但是如果是通过服务器访问,即localhost:8080/webroot/myhtml.html这样的形式访问,则这个div是46px,并且只会在谷歌出现这个问题更奇葩的是,只有最后一个数字是5的时候才出现问题,例如我设置为44px,53px是正常的,但是如果设置为45px,55px,65px就出问题了,下面是我的完整代码 <!DO

多对一-Hibernate上一个很诡异的问题

问题描述 Hibernate上一个很诡异的问题 User.hbm.xml: <set cascade="all" inverse="true" name="activeFriends" sort="unsorted"> <key column="concernedUserId"/> <one-to-many class="Friends"/> <

treeSet 一个很诡异的重复性判断问题

问题描述 有一个需求是这样的,要求去掉重复Id的文章,如果id相同就去掉,如果不同就按文章发表时间排序,但写完代码发现,id相同的文章怎么也去重不了:public class ArticleSource implements Comparable<ArticleSource> {private long id;private int sourceId;private long time;public ArticleSource(long id,int sourceId,long time) {

java-用eclipse安卓开发时遇到的一个十分诡异的问题

问题描述 用eclipse安卓开发时遇到的一个十分诡异的问题 @Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String filePath = ""/storage/sdcard0/DCIM/Camera/20130826_182939.jpg"&q

用火狐下载文件出现很诡异的问题

问题描述 用火狐下载文件出现很诡异的问题 在csdn上下载文件 文件后缀名总是自动多出一个'_' 更奇怪的是 下载下来会有两个同名文件 其中一个是空文件 删除空文件后缀名还会报错 说此文件不在这个路径下 无法执行删除操作 不知道这个是怎么了 就是在csdn上下载东西会出现这个问题 解决方案 这个我也遇到过,你下载完后,对文件夹重新命名,把最后字符下划线去掉,不影响你对rar文件的使用.谢谢 解决方案二: 删除空文件没有作用 说找不到这个文件的位置 解决方案三: 这是火狐浏览器的问题,应该是在下载

canvas和setInterval很诡异的问题

问题描述 canvas和setInterval很诡异的问题 本人萌新,写了一个关于canvas扇形图的动画效果,但是setInterval执行的时候很诡异的只有 第三次才能执行代码,看了半天也不知道哪里出错了,请大神们帮帮忙,感激不尽!! 代码如下,三个框框里面可以输入数字表示百分比 <!DOCTYPE html> <html> <head> <title>扇形图动态效果</title> <meta http-equiv="con

java-新手问一个很奇怪的问题

问题描述 新手问一个很奇怪的问题 class Demo { int num = 1; int add = 2; Demo() { num = 5; add = 6; } void show() { System.out.println("Fu num="+num+" Fu add="+add); } } class DemoA extends Demo { DemoA() { this.num = 3; this.add = 4; } void show() { S

字符串-一个很基础的返回值问题

问题描述 一个很基础的返回值问题 想要打印字符串数组,去掉中间的空格和Tab,并且删除全为空的行,哪里有错?谢谢. #include #define MAXLINE 1000 int getline(char line[], int maxline); int copy(char to[],char from[]); int main(){ int len; int max; char line[MAXLINE]; max=0; while ((len=getline(line,MAXLINE)

js-最近遇到一个很醉人的问题 我有两个项目 当我单独打开a项目的时候 ..

问题描述 最近遇到一个很醉人的问题 我有两个项目 当我单独打开a项目的时候 .. 最近遇到一个很醉人的问题 我有一个项目 分为两次打开 当我单独打开a项目的时候 里面的有个功能是缺失的关掉后 打开b项目那个功能又恢复了 a和b是相同的项目 他们的代码是一样的 更有意思的是当我两个项目都运行的时候 a和b的功能又全都恢复了 我关掉B 再次运行A 功能又缺失了 解决方案 我猜测应该去对比一下配置文件跟机器的运行环境的log文件