【问题标题】:How to convert an interface with MapStruct?如何使用 MapStruct 转换接口?
【发布时间】:2017-12-02 04:46:12
【问题描述】:

我在 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 是抽象的;无法实例化)。

有什么想法吗? 谢谢。

【问题讨论】:

  • 我们应该使用@aftermapping 来进行手动映射吗?

标签: java mapstruct


【解决方案1】:

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

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

我们必须删除@InheritInverseConfiguration 才能进行反向操作。

【讨论】:

    【解决方案2】:

    它应该与object factory method 一起使用:

    public IUser createIUser() {
        return new User();
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-27
      • 2020-07-14
      相关资源
      最近更新 更多