使用 Orika 将实体层次结构映射到 DTO 层次结构
Mapping a hierarchy of entities to a hierarchy of DTOs using Orika
当对象都属于 class 层次结构时,是否可以将对象映射到其对应的 DTO?
例如:我有一个 BaseEntity
和一些 ExtendedEntity1
.. ExtendedEntityN
在另一边我有一个 BaseDTO
和一些 ExtendedDTO1
.. ExtendedDTON
那我有一个服务方法:
public BaseDTO getById(String id) {
return orikaMapper.map(repository.findOne(id), BaseDTO.class);
}
这样我显然总是得到一个 BaseDTO
,但我想将实体映射到正确的 DTO 类型...
有办法实现吗?我不会使用 switch
或 instanceof
-检查解决方法...
尚未发现更好的解决方案(如果存在的话),所以我会这样做:
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()));
}
当对象都属于 class 层次结构时,是否可以将对象映射到其对应的 DTO?
例如:我有一个 BaseEntity
和一些 ExtendedEntity1
.. ExtendedEntityN
在另一边我有一个 BaseDTO
和一些 ExtendedDTO1
.. ExtendedDTON
那我有一个服务方法:
public BaseDTO getById(String id) {
return orikaMapper.map(repository.findOne(id), BaseDTO.class);
}
这样我显然总是得到一个 BaseDTO
,但我想将实体映射到正确的 DTO 类型...
有办法实现吗?我不会使用 switch
或 instanceof
-检查解决方法...
尚未发现更好的解决方案(如果存在的话),所以我会这样做:
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()));
}