2014-12-02 2 views
0

I'm usign Spring BeanUtils с этой классовой структуройИгнорировать свойства в подклассе с BeanUtils

 class B{ 
      int b; 
    } 

    class A{ 
      int a; 
      B bClass; 
    } 

Затем получает экземпляр А хотят создать новую, но без значения Синей книги Так что я делаю это:

A a = new A(); 
    B b = new B(); 
    b.setb(2); 
    a.seta(1); 
    a.setbClass(b); 
    A a1 = new A(); 
    BeanUtils.copyProperties(a, a1, new String[]{"bClass.b"}); 

Но все же значение атрибута b 2 все еще справляется с классом a1.

Что I'm делать неправильные

ответ

1

BeanUtils.copyProperties просто копирует значения полей. Если это ссылочное поле, оно также скопирует его (если оно отсутствует в ignoreProperties), оно не делает глубокое копирование. Вы не можете заставить его игнорировать поля B.

+0

Это будет игнорировать bClass полностью, я верю, и это не то, что нужно (это игнорировать поле). –

1

BeanUtils.copyProperties() предназначен для мелких копий, поэтому вы не можете использовать его для вложенных полей. Вы можете попробовать с BeanWrapper, но я не уверен, что там что-то вроде ignored properties, вам, возможно, придется это сделать вручную.

Смежные вопросы