Search code examples
javamapstruct

mapstruct mapping Entity OneToMany to DTO and reverse


I'm trying to use a mapstruct and I need to mapping Entity with a sub Entity list, I have relationship oneToMany and manyToOne and I need to mapping in both cases:

@Data
@Entity
public class EmailEntity {

private int id;  

... // some fields

@ManyToOne
private DeliveredEmailInfoEntity deliveredEmailInfo;

}

.

@Data
@Entity
public class DeliveredEmailInfoEntity {

private int id;

... // some fields  

@OneToMany
private List<EmailEntity> emails;

}

mapping to:

@Data
public class EmailDTO {

private int id;  

... // some fields

private DeliveredEmailInfoDTO deliveredEmailInfo;

}

.

@Data
public class DeliveredEmailInfoDTO {

private int id;

... // some fields  

private List<EmailDTO> emails;

}

How to do it in the best way ?


Solution

  • (Also see other answer)

    It should be straightforward, there is nothing challenging in your case:

    @Mapper
    public interface EmailInfoMapper {
    
        EmailDTO entityToDTO(EmailEntity duration);
        EmailEntity dtoToEntity(EmailDTO price);
    
        DeliveredEmailInfoDTO entityToDTO(DeliveredEmailInfoEntity duration);
        DeliveredEmailInfoEntity dtoToEntity(DeliveredEmailInfoDTO price);
    }
    

    You should include your mapper in your question and what the problem you have with it.