集成 MapStruct 和 Lombok 可能会导致错误“未知属性” ...在结果类型中...”在实体和 DTO 上使用 @Getter 和 @Setter 注释时一起上课。尽管两个库的版本兼容,但还是会出现这种情况。
出现此问题的原因是 Maven 仅使用 MapStruct 处理器,而忽略了 Lombok 处理器。要解决此问题:
在 Maven 编译器插件配置中,将 Lombok 依赖项添加到annotationProcessorPaths 列表:
<annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>${org.projectlombok.version}</version> </path> ... </annotationProcessorPaths>
另外,对于Lombok 1.18.16及以上版本,添加以下内容路径:
<path> <groupId>org.projectlombok</groupId> <artifactId>lombok-mapstruct-binding</artifactId> <version>0.2.0</version> </path>
或者,添加 MapStruct 处理器作为依赖项并删除注释ProcessorPaths:
<dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>${org.mapstruct.version}</version> </dependency> </dependencies>
注意:建议使用选项 1,以确保在 MapStruct 中没有引用任何内部 MapStruct 类。代码。
要在 IntelliJ 中启用注释处理,请将 MapStruct 处理器添加为提供的依赖项,因为 [IntelliJ 问题 IDEA-150621](https://youtrack.jetbrains.com /issue/IDEA-150621).
以上是为什么 MapStruct 无法识别 Lombok 的 @Getter 和 @Setter 注解,以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!