推土机深度映射将设置为Set
免责声明:这里已经提出了同样的问题。 在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
属性。
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并且从这一点开始进行转换但不知何故我觉得这不是最好也不是更多优雅的解决方
关于如何解决这个问题的任何其他想法?