Spring MVC:如何将DTO映射到相当复杂的实体?

时间:2018-08-09 16:51:04

标签: java entity dto

将包含代表FK(长整数)的多个值的DTO映射到相当复杂的Entity的正确方法是什么? 我的意思是,例如,我有一个从前端到达的DTO(省略了验证注释):

public class QuestionDto {
    private Long id;
    private String name;
    private Long typeId;
    private Long languageId;
    private Long subjId;
    private Set<Long> resourceIds;
    private Set<Long> answerIds;
}

需要像这样映射到一个实体(简称为JPA注释)

public class Question {
    private Long id;
    private String name;
    private Type type;
    private Lang lang;
    private Subject subj;
    private Set<Resource> resources;
    private Set<Answer> answers;
}

我已经了解了一些自动映射工具,例如 ModelMapper,它似乎可以很好地处理基元,但是对于对象,我基本上需要做一些事情。这样(将ID转变为成熟的实体或其代理):

entity.setType(em.getReference(Type.class, dto.getTypeId());

entity.setType(em.find(Type.class, dto.getTypeId());

我有很多这样的转换,目前我是半手动管理的,它用这种可怕的转换逻辑代码使我的服务类混乱不堪,使我很沮丧。

请提出更好的解决方案。代码示例将不胜感激!

0 个答案:

没有答案