ModelMapper:向实体内部缺少的DTO添加字段

时间:2019-07-10 16:02:06

标签: java spring java-8 mapping modelmapper

如何映射实体中不存在的DTO字段?我举一个例子,我有两个基本的类。 DTO类(通常是bean类)和JPA实体类。您已经猜到了,我想将实体类映射到DTO。

@Entity
class Poll {

    @Id
    private Long id;
    private String question;
    private List<Choice> choices;
    private User creator;

    ...
}

*类已简化,它的JPA映射无关紧要

class PollDTO {

    private Long id;
    private Long question;
    private List<ChoiceDTO> choices;
    private UserDTO creator;

    private Long votes; // This field exists JUST in DTO class

    ...
}

如您所见,DTO包含字段votes,该字段在实体内部不存在,因为投票存储为单独的JPA实体。因此,需要手动设置值,比方说,是从voteService.getVotesForPoll(Long pollId)中获取值。

当使用PollPollDTO映射到modelMapper.map(poll, PollDTO.class);时,如何指示ModelMapper自动获取并应用此值?

我在转换器上进行了尝试,基本上可以运行,但是随后我也必须将Poll的其他字段映射到PollDTO,这表明将Choice映射到{{ 1}}例如也是手动...这是我的转换器方法...

ChoiceDTO

**如果您想了解一些注释,那么我现在正在使用Spring框架,对于这个问题没有关系

0 个答案:

没有答案