【问题标题】:Internal error in the mapping processor: java.lang.NullPointerException映射处理器中的内部错误:java.lang.NullPointerException
【发布时间】:2017-09-29 02:48:29
【问题描述】:

我正在尝试使用 mapstruct 将本地 pojo 映射到自动生成的域对象。期望一个特定的复杂结构,其他一切似乎都映射,并且映射器实现类得到生成。以下是我得到的错误。

我的映射器类是:

@Mappings({
        @Mapping(source = "sourcefile", target = "sourceFILE"),
        @Mapping(source = "id", target = "ID"),
        @Mapping(source = "reg", target = "regID"),
        @Mapping(source = "itemDetailsType", target = "ItemDetailsType") //This is the structure that does not map
})
AutoGenDomainType map(LocalPojo localPojo);

@Mappings({
        @Mapping(source = "line", target = "LINE"),
        @Mapping(source = type", target = "TYPE")
})
ItemDetailsType map(ItemDetailsTypes itemDetailsType);

错误:

Internal error in the mapping processor: java.lang.NullPointerException         at org.mapstruct.ap.internal.processor.creation.MappingResolverImpl$ResolvingAttempt.hasCompatibleCopyConstructor(MappingResolverImpl.java:547)          at org.mapstruct.ap.internal.processor.creation.MappingResolverImpl$ResolvingAttempt.isPropertyMappable(MappingResolverImpl.java:522)   at org.mapstruct.ap.internal.processor.creation.MappingResolverImpl$ResolvingAttempt.getTargetAssignment(MappingResolverImpl.java:202)   at org.mapstruct.ap.internal.processor.creation.MappingResolverImpl$ResolvingAttempt.access$100(MappingResolverImpl.java:153)    at  org.mapstruct.ap.internal.processor.creation.MappingResolverImpl.getTargetAssignment(MappingResolverImpl.java:121)   at 
.....
.....
[ERROR] 
[ERROR] Found 1 error and 16 warnings.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project uwo-services: Compilation failure

目标对象ItemDetailsType 确实有其他不需要映射的属性。该错误表示编译问题,但我没有找到任何问题。我还尝试添加在我的映射器类级别尝试了unmappedTargetPolicy = ReportingPolicy.IGNORE,只是为了避免这是由未映射的属性引起的,但仍然没有解决方案。

【问题讨论】:

  • 找到了类似问题的答案stackoverflow.com/questions/33994644/…
  • @KarthikeyanKesavaraj 我确实检查过。它解释了如何使用 mapStruct 来映射结构不同的复杂对象。但是,在我的情况下,我还有其他可以映射的属性和一个没有映射的属性。它抛出一个NullPointerException

标签: spring-mvc mapstruct


【解决方案1】:

这是 MapStruct 中的一个已知错误。该错误在#729 中报告,已在 1.1.0.Final 中修复。您正在使用 1.0.0.Final。我强烈建议切换到 1.1.0.Final 或 1.2.0.Beta2。

更新后,您将看到一条更好的错误消息,并且您将确切知道映射中的问题所在。

首先看一下,@Mapping(source = "itemDetailsType", target = "ItemDetailsType") 中的目标似乎是错误的。您确定那里需要大写字母吗?

【讨论】:

  • 你说得对,我使用的是 1.0.0 Final,将版本更改为 1.1.0 并没有给我任何错误消息,但实际上生成了我想要的类。但是我无法使用新版本提交更改。因此,我通过使用 @AfterMapping 并设置了我的值来解决问题。
猜你喜欢
  • 2021-03-14
  • 2022-09-23
  • 2021-09-01
  • 2021-06-09
  • 2020-09-28
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
相关资源
最近更新 更多