java - mapstruct:1.4.0.CR1:使用“。”时出错 作为目标属性
问题描述
如前所述,这里是目标“。” 运营商有效吗?我试图得到“。” 运算符作为目标属性工作,但在此配置下的构建过程中出现错误,如下所示:
- Spring Boot 2.1.2(但我认为并不重要)
- 龙目岛 1.18.4
- MapStruct 1.4.0.CR1
- Java 1.8.0_92
- Intellij 2019.3 Ultimate(但我认为并不重要)
银行类
@Data
public class BankEntity {
private CustomerEntity customer;
}
客户类
@Data
public class CustomerEntity {
private String id;
private String name;
}
CustomerDto 类
@Data
public class CustomerDto {
private String id;
private String name;
}
映射器类
public interface CustomerMapper {
@Mapping(target = ".", source = "bank.customer")
CustomerDto toDto(BankEntity bank);
}
简单的测试用例
@Test
public void bankToCustomerDtoTest() {
BankEntity bank = new BankEntity();
CustomerEntity customer = new CustomerEntity();
customer.setId("123");
customer.setName("Smith");
bank.setCustomer(customer);
CustomerMapper customerMapper = Mappers.getMapper(CustomerMapper.class);
CustomerDto dto = customerMapper.toDto(bank);
System.out.println(dto);
}
错误:(7、8)java:映射处理器中的内部错误:org.mapstruct.ap.internal.util.Collections 处的 java.util.ArrayList$Itr.next(ArrayList.java:854) 处的 java.util.NoSuchElementException .first(Collections.java:50) 在 org.mapstruct.ap.internal.model.BeanMappingMethod$Builder.handleDefinedMappings(BeanMappingMethod.java:477) 在 org.mapstruct.ap.internal.model.BeanMappingMethod$Builder.build(BeanMappingMethod .java:184) 在 org.mapstruct.ap.internal.processor.MapperCreationProcessor.getMapper(MapperCreationProcessor.java:151) 在 org.mapstruct.ap.internal.processor.MapperCreationProcessor.getMappingMethods(MapperCreationProcessor.java:376) 在 org. mapstruct.ap.internal.processor.MapperCreationProcessor.process(MapperCreationProcessor.java:122) 在 org.mapstruct.ap.internal.processor.MapperCreationProcessor。org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:283) 的进程(MapperCreationProcessor.java:76) org.mapstruct.ap.MappingProcessor.processMapperTypeElement(MappingProcessor.java:263) 的 org.mapstruct.ap.MappingProcessor .processMapperElements(MappingProcessor.java:221) 在 org.mapstruct.ap.MappingProcessor.process(MappingProcessor.java:156) 在 com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794) 在 com。 sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705) 在 com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91) 在 com.sun.tools.javac.processing .JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035),位于 com.sun.tools.javac。processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176) 在 com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170) 在 com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler. java:856) 在 com.sun.tools.javac.main.Main.compile(Main.java:523) 在 com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129) 在 com.sun .tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138) 在 org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:207) 在 org.jetbrains.jps.incremental.java.JavaBuilder.compileJava (JavaBuilder.java:486) 在 org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:338) 在 org.jetbrains.jps.incremental.java.JavaBuilder.doBuild(JavaBuilder.java:263) 在org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:216) 在 org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:1006) 在 org.jetbrains.jps.incremental 的 org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1328) .IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1073) 在 org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:967) 在 org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:796) 在org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:378) 在 org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:178) 在 org.jetbrains.jps.cmdline.BuildRunner.runBuild( BuildRunner.java:140) 在 org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:297) 在 org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:232) 在 java.util 的 org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:130)。 concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)
解决方案
推荐阅读
- python - 如何降低时间复杂度?
- android - 如何在android中使用背景图像制作透明布局?
- sql-server - 表连接总和不正确
- html - 如何更改特定字符的颜色 [jQuery/RegEx]
- mongodb - 如何提高此 MongoDB 查询的性能
- android - EdgeLight:屏幕边框不会超出反应原生的缺口和软键
- jquery - 使用 AJAX 从 HTML 表中插入大量行的最佳方法
- python - 显示具有自定义颜色的数组
- .net - 长时间运行的 SQL Server 报告,如何在异步模式下运行它们
- regex - 正则表达式与 ${} 内允许的句点精确匹配一个 alpha 字符串