使用Orika将实体层次结构映射到DTO的层次结构

时间:2017-05-17 15:58:11

标签: java orika object-object-mapping

当属于类层次结构时,是否可以将对象映射到其相应的DTO?

例如:我有一个BaseEntity和一些ExtendedEntity1 .. ExtendedEntityN

另一方面,我有一个BaseDTO和一些ExtendedDTO1 .. ExtendedDTON

然后我有一个服务方法:

public BaseDTO getById(String id) {
    return orikaMapper.map(repository.findOne(id), BaseDTO.class);
}

这样我显然总是BaseDTO,但我想将实体映射到正确的DTO类型...

有没有办法实现这个目标?我不会使用switchinstanceof - 检查解决方法......

1 个答案:

答案 0 :(得分:0)

尚未发现更好的解决方案(如果存在),所以我会这样做:

Map<Class<? extends BaseEntity>, Class<? extends BaseDTO>> dtoMappings;

我正在定义一个映射Map,我在其中放置了实体和DTO之间的所有关联。然后在我的方法中:

public BaseDTO getById(String id) {
    BaseEntity e = repository.findOne(id);
    return orikaMapper.map(repository.findOne(id), dtoMappings.get(e.getClass()));
}