BeanUtils.copyProperties缺少深层嵌套变量?

Lan*_*lot 2 java apache-commons-beanutils

我正在使用BeanUtils.copyProperties将一个对象的整个内容复制到另一个继承自它的对象中.

下面是上下文,从中复制值的域对象包含一组自定义类型为Xref的对象.该自定义类型具有嵌入式类,其具有各种类类型的各种字段.

由于某种原因,封装在嵌入对象中的对象中的一个字段不会被复制.但是我需要的大多数其他东西都被复制了.

举个例子:

class Source {
private Set<Xref> xref;
...
}

class Xref {
...
public static class primaryKey {
...
private MyObj obj;
}
}

class MyObj {
private Integer id;
...
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用BeanUtils.copyProperties将"Source"对象的内容复制到"SourceExtended"对象中,则使用这些名称source.xrefs.get(0).getPrimaryKey().getObj().getId()的值不会被复制.在原始对象中它有一个值,但在目标对象中它是null ...

知道为什么???

谢谢.

小智 10

来自Javadocs:

请注意,此方法旨在执行属性的"浅层复制",因此不会复制复杂属性(例如,嵌套的属性).