将包含代表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());
我有很多这样的转换,目前我是半手动管理的,它用这种可怕的转换逻辑代码使我的服务类混乱不堪,使我很沮丧。
请提出更好的解决方案。代码示例将不胜感激!