忽略目标 class 中不在目标 class 中的字段。地图结构

ignore fields from target class which isn't in target class. MapStruct

我在通过 MapStruct 映射字段时遇到问题。

我有两个 class。 第一个域 class "Event" 例如字段

1) id
2) lastUpdate
2) type
3) participants
4) description

第二个 class 是 "EventForm"。 EventForm 有字段:

1) type
2) participants 
3) description

当我想更新现有事件时,会发生以下情况: 1) 我通过 Id

从数据库中获取一个现有事件

Event event = eventService.get(id);

事件有 id = 10000,lastUpdate=11213123123;

2) 我正在将字段从表单映射到域 class

event = mapper.eventFormToEvent(eventForm)

3) 在该事件之后,id 和 lastUpdate 值中的值为 NULL。

如何忽略目标 class 中所有未映射的字段?

我会指定我需要忽略所有未映射的字段,而不是一个一个地忽略

您要找的是updating bean instances。这是您需要用于您的用例的内容。它使用 @MappingTarget 注释。

您的映射器将如下所示:

@Mapper
public interface MyMapper {

    void update(@MappingTarget Event event, EventForm eventForm);
}

或:

@Mapper
public interface MyMapper {

    Event update(@MappingTarget Event event, EventForm eventForm);
}

在第二种情况下,MapStruct,只是 returns 传回了 event。您必须记住,为 @MappingTarget 传递的参数不能是 null.