gpt4 book ai didi

mapstruct:使用来自 DTO 的数据更新实体的现有字段

转载 作者:行者123 更新时间:2023-12-03 14:39:42 25 4
gpt4 key购买 nike

我最近在我的项目中添加了 mapStruct。这个框架很酷,但我想不出一件事。

这是我的情况:我有 Profile实体和字段与 Person类型。我想使用 ProfileDto 更新它.我正在使用 void fromDto(ProfileDto dto, @MappingTarget Profile entity)为此的方法。问题是映射器总是 创建新人 而不是使用来自 profile 的人实体

我的实体是:

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
}


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 = entity.getPerson()

最佳答案

这是一个已知问题,请参阅 #1011 .这已在 1.2.0 中得到改进(在撰写本文时 11.07.2017 的最新版本是 1.2.0.Beta3 )。您应该尝试最新版本,它应该可以按预期工作。

关于mapstruct:使用来自 DTO 的数据更新实体的现有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45037502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com