MapStruct:如何跳过特定属性,使其不复制该属性在集合内部并且该集合在主实体内部

时间:2019-07-03 11:49:04

标签: java collections dto mapstruct

我正在使用mapstruct更新现有的bean。下面是我的豆子。如您所见,我的Entity bean有一个AnotherEntity bean的集合。

public class Entity
{
private Integer id;
private String name;
private List<AnotherEntity> anotherEntityList = new ArrayList<AnotherEntity>();
//getters & setters
}

public class AnotherEntity
{
private Integer id;
private String text;
//getters & setters
}

下面是我定义映射的方式。

Entity updateEntityWithEntity(final Entity sourceEntity, @MappingTarget final Entity targetEntity);

在更新时,我希望mapstruct跳过AnotherEntity bean中的id属性。 目前,它正在清除现有集合,并使用源中的值创建一个新集合。

如果我添加以下内容

@Mapping(target = "anotherEntityList", ignore = true)它忽略了整个集合。但是我想要收集但只忽略id属性。这样的事情。 @Mapping(target = "anotherEntityList.id", ignore = true)

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

MapStruct无法生成列表映射。它不会知道用户的实际意图。请查看this以获得更多说明。

但是假设列表都是有序的,并且元素0需要映射到目标元素0、1到1等。

您可以执行以下操作:

MemAvailable: 521659112 kB