Отображение иерархии сущностей в иерархию DTO с помощью Orika

Можно ли сопоставить объект с соответствующим ему DTO, когда оба принадлежат к иерархии классов?

Например: у меня есть BaseEntity и немного ExtendedEntity1.. ExtendedEntityN

С другой стороны у меня есть BaseDTO и немного ExtendedDTO1.. ExtendedDTON

Тогда у меня есть метод обслуживания:

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

Таким образом, я, очевидно, получаю всегда BaseDTO, но я бы хотел сопоставить сущность с правильным типом DTO...

Есть ли способ добиться этого? Я бы не стал использовать switch или же instanceofпроверить обходные пути...

1 ответ

Решение

Еще не найдено лучшего решения (если оно существует), поэтому я пойду по этому пути:

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()));
}
Другие вопросы по тегам