【发布时间】:2017-07-11 14:31:23
【问题描述】:
我最近在我的项目中添加了 mapStruct。这个框架很酷,但我想不通。
这是我的情况:我有 Profile 实体和字段,类型为 Person。我想使用ProfileDto 更新它。我为此使用void fromDto(ProfileDto dto, @MappingTarget Profile entity) 方法。问题是映射器总是 create new Person 而不是使用来自 profile entity 的人员
我的实体是:
public class Profile {
private Person person;
.. setters, getters and constructors
}
public class Person extends AbstractEntity {
private String name;
private String surname;
.. setters, getters and constructors
}
Dto
public class ProfileDto extends AbstractDto {
private String name;
private String surname;
.. setters, getters and constructors
}
我的映射器
public abstract class ProfileMapper {
@Mappings({
@Mapping(target = "name", source = "entity.person.name"),
@Mapping(target = "surname", source = "entity.person.surname")
})
public abstract ProfileDto toDto(Profile entity);
@InheritInverseConfiguration(name = "toDto")
public abstract void fromDto(ProfileDto dto, @MappingTarget Profile entity);
}
生成的代码
@Override
public void fromDto(ProfileDto dto, Profile entity) {
if ( dto == null ) {
return;
}
Person person = new Person();
entity.setPerson( person );
...
我不需要在这里创建新的 person 实例
person = new Person();
我用什么方法来替换这个字符串:
person = entity.getPerson()
【问题讨论】:
标签: mapstruct