Забелязах, че BeanUtils.copyProperties(dest, src) има странен страничен ефект. Всички null Integers
(вероятно Long
, Date
и т.н.) се преобразуват в 0 и в двата обекта: източник (sic!) и местоназначение. Версия: commons-beanutils-1.7.0
javadoc:
Копирайте стойностите на свойствата от изходния bean към целевия bean за всички случаи, когато имената на свойствата са еднакви.
Например:
class User {
Integer age = null;
// getters & setters
}
...
User userDest = new User();
User userSrc = new User();
BeanUtils.copyProperties(userDest, userSrc);
System.out.println(userDest.getAge()); // 0
System.out.println(userSrc.getAge()); // 0
Може да бъде много бъгово, че изходният обект действително е модифициран. Кое е най-доброто решение да се направи "реално" копие на обект с нулева стойност.