如何使用 MapStruct 转换接口?
How to convert an interface with 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 是抽象的;无法实例化)。
有什么想法吗?
谢谢。
不确定这是最好的方法...
但是我们使用@AfterMapping 在默认方法中手动创建要在接口上实现的对象。
我们不得不删除@InheritInverseConfiguration 以进行反向操作。
它应该与 object factory method:
一起工作
public IUser createIUser() {
return new User();
}
如果需要 IUser
的实例,将调用此工厂方法。
我在 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 在默认方法中手动创建要在接口上实现的对象。
我们不得不删除@InheritInverseConfiguration 以进行反向操作。
它应该与 object factory method:
一起工作public IUser createIUser() {
return new User();
}
如果需要 IUser
的实例,将调用此工厂方法。