忽略目标类中不属于目标类的字段。 MapStruct

时间:2017-09-12 15:36:23

标签: java mapstruct

我遇到了从MapStruct映射字段的问题。

我有两节课。 第一个域名"事件"例如,使用字段

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

第二课是" EventForm"。 EventForm有字段:

1) type
2) participants 
3) description

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

从数据库中获取现有事件

Event event = eventService.get(id);

事件的id = 10000,lastUpdate = 11213123123;

2)我将字段从表单映射到域类

event = mapper.eventFormToEvent(eventForm)

3)该事件在id和lastUpdate值中具有NULL值。

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

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

1 个答案:

答案 0 :(得分:0)

您要找的是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只返回传递的event。您必须记住,为@MappingTarget传递的参数不得为null