MapStruct 1.3.0.Final。不要忽略非getter-setter方法

MapStruct 1.3.0.Final. don't ignore non-getter-setter methods

我使用 Mapstruct 和 JOOQ 在 record-class 和 POJO 之间进行映射。今天我尝试从 Mapstruct 1.2.0.Final 切换到 1.3.0.Final。但是我得到这样的编译错误 - Unmapped target properties: "value1, value2, value3, value4".

JOOQ 使用通常的 setters/getters 和一些 public 名称如 valueN 的非静态方法生成记录-class。 valueN 方法为每个 setter/getter.

生成

使用 Mapstruct 1.2。0.Final 它工作得很好。 ValueN 方法在生成的映射器中被忽略。生成的映射器仅使用 getters-setters。我没有明确地为 ValueN 设置忽略。

如何在 Mapstruct 1.3.0.Final 中优雅地修复此行为?如何配置 Mapstruct 只使用 getters-setters?

现在我看到两个选项:

选项 1。 对所有 valueN 方法使用 @Mapping(target = "value1", ignore = true)。我可以在目标道具中使用一些正则表达式模式来忽略单个 @Mapping 中的所有 valueN 方法吗?

选项 2。 编写我自己的 AccessorNamingStrategy

我应该只选择上面的选项之一,还是 Mapstruct 有返回 1.2.0 行为的任何配置选项?

在 1.3.0.Final 中,不幸的是,为了禁用流畅的访问器,您必须使用选项 1 或选项 2。

如果您选择选项 2,那么您可以从 DefaultAccessorNamingStrategy 扩展到 isFluentSetter return false

或者..

选项 2。对所有 valueN 方法使用 @BeanMapping(ignoreByDefault = true)。