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)。
我使用 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)。