忽略目标 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
.
我在通过 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
.