当前位置: 首页 > 知识库问答 >
问题:

忽略目标类中不在目标类中的字段。MapSTRt

百里胜泫
2023-03-14

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

我有两门课。第一个域类“事件”,例如带有字段

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

第二类是“EventForm”。EventForm具有字段:

1) type
2) participants 
3) description

当我想更新现有事件时,会发生以下情况:1)我通过Id从数据库中获取现有事件

<代码>事件事件=事件服务。获取(id)

事件id=10000,lastUpdate=11213123123;

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

<代码>事件=映射器。eventFormToEvent(eventForm)

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

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

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

共有1个答案

宋唯
2023-03-14

您需要的是更新bean实例。这就是您需要在用例中使用的内容。它使用MappingTarget注释。

您的映射器如下所示:

@Mapper
public interface MyMapper {

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

或:

@Mapper
public interface MyMapper {

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

在第二种情况下,MapStruct只返回传递的事件。您必须记住,为MappingTarget传递的参数不能为null。

 类似资料:
  • 当使用laravel 8创建一个新项目时,我得到了这个错误。 Illumb\Contracts\Container\BindingResolutionException目标类[SayhelloController]不存在。http://127.0.0.1:8000/users/john 在laravel文档中,Routes控制器类必须这样定义 目标类 所以我确实做到了。

  • 考虑java中的此类(数据不是私有的或公共的): 我将这个类转换为kotlin 反编译后的代码是这样的: 在kotlin类中,dataPart2调用数据getter(检查反编译代码中的第2行),但我需要访问数据的实际值而不是getter,在kotlin中是否可以访问字段而不调用getter?我不想更改getter或方法名称。

  • 我需要一些使用MapStruct映射嵌套POJO的帮助。我需要跳过/删除目标类中所有子类的特定字段。 例如,以下是我的目标POJO 所有这些子类——,,。。。包含一个字段“”,我想在映射时忽略它。这种结构使得这些类不共享包含此字段的公共基类——“”。 我创建的映射器如下所示: 这工作。 然而,当中的子类数量很大时,它会变得很乏味。我需要明确指定每个类。 有没有人能告诉我,这是否可以用一种更通用的方

  • 我最近开始研究Laravel,并安装了Laravel Framework 8.5。0 下面是我的控制器"UserController.php" 这是我的网站。路由中的php 当我尝试访问http://127.0.0.1:8000/users,它只是用下面的错误击中我 Illumb\Contracts\Container\BindingResolutionException 目标类[UserCont

  • 这里我得到,因为不作为目标存在,这是意料之中的。但是有没有什么可以忽略或跳过未知的目标呢?或者将未知目标映射到已知目标(这对我来说是不可行的)? 但是对于旧的分支,还不存在。到目前为止,我们的解决方案是将添加为的依赖项(因为我们的build.xml受版本控制),但这意味着我们不能单独运行。 事后看来,我们应该创建一个代理目标,比如(我们已经对单元测试使用),它将委托给这两个目标。但是,除非对我最初

  • 尽管我的Java7项目依赖于,但它在Gradle中构建得很好。 我非常非常困惑。只是Java 8中的一个内容,对吗? 我有一个Gradle项目,并且我将和都设置为。 在这个模块的一个类中,我导入了,我以为直到Java8才包含它。 如果我运行,编译器甚至会用正确的选项调用。不过,有一个警告听起来有点可疑。然而,罐子构建得很好。 我要疯了吗?