我在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是抽象的;无法实例化)。
有什么想法吗? 谢谢。
答案 0 :(得分:0)
不确定这是最好的方法......
但我们使用@AfterMapping在默认方法中手动创建要在接口上实现的对象。
我们不得不删除@InheritInverseConfiguration以进行反向操作。
答案 1 :(得分:0)
public IUser createIUser() {
return new User();
}
如果需要IUser
的实例,则会调用此工厂方法。