免责声明:
Mapping deep properties with intermediate collections in dozer已经提出了同样的问题,但没有接受答案(我的案例没有正确答案).
所以问题.我有一个由ComplexObject组成的领域,如下所示
public class ComplexObject {
private Set inner;
... //other fields, setters and getters
}
public Class AnotherComplexObject {
private String property;
... //other fields, setters and getters
}
现在,我将ComplexObject映射到Target,其中Target具有Set< String>属性.
public class Target {
private Set targetString;
... //other fields, setters and getters
}
我想将每个ComplexObject inner.property映射到一个Target targetString.在语义上看起来像的东西(当然,这不起作用,属性不是Set和Dozer的成员生成MappingException):
ComplexObject
Target
inner.property
targetString
如果我将AnotherComplexObject的toString方法修改为,我可以实现我的目标
public class AnotherComplexObject {
public String toString(){
return property;
}
}
然后,Dozer将检测源Set是“type”AnotherComplexObject,而目标Set是String,并将在转换期间使用方法toString.不幸的是,这不是一个解决方案,因为我需要一个方法在我的POJO中让Dozer进行转换.
编写一个自定义转换器是什么工作,它会覆盖convert方法以检查source是否为Set,然后假设集合中的对象是AnotherComplexObject并从这一点开始进行转换但不知何故我觉得这不是最好也不是更多优雅的解决方
关于如何解决这个问题的任何其他想法?