如何使用MapStruct转换接口?

时间:2017-11-22 12:10:41

标签: java mapstruct

我在mapStruct文档中做了一些研究,但没有找到或理解我能做些什么来实现这个目的:包含一个平面DTO对象接口的实体的对话。

这里是具有属性的实体:

public class Group {
    ...

    private IUser user;

    ...
}

这里是DTO:

public GroupDTO {

    private Long idUser;

    private String username;
}

我们尝试这种映射:

@Mappings({
        @Mapping(source = "user.id", target = "idUser"),
        @Mapping(source = "user.name", target = "username")})
GroupDTO toDTO(Group entity);

使用经典映射,mapStruct会生成错误(IUser是抽象的;无法实例化)。

有什么想法吗? 谢谢。

2 个答案:

答案 0 :(得分:0)

不确定这是最好的方法......

但我们使用@AfterMapping在默认方法中手动创建要在接口上实现的对象。

我们不得不删除@InheritInverseConfiguration以进行反向操作。

答案 1 :(得分:0)

它应该与object factory method

一起使用
public IUser createIUser() {
    return new User();
}

如果需要IUser的实例,则会调用此工厂方法。