java - Mapstruct 忽略 @BeanMappingqualifiedByName
问题描述
我正在尝试将分离的@AfterMaping
/@BeforeMapping
方法用于 2 种方法:toDto
and toPartialDto
,但 MapStruct 会生成代码,其中使用了所有@AfterMaping
/@BeforeMapping
方法。我尝试将我的抽象类重新设计为接口,但问题仍然存在。
@BeanMapping(qualifiedByName = {"method1", "method2", "method3"})
public abstract MyDto toDto(MyEntity entity);
@Named("toPartialDto")
@BeanMapping(ignoreByDefault = true, qualifiedByName = {"method3", "method4"})
public abstract MyDto toPartialDto(MyEntity entity);
@Named("method1")
@BeforeMapping
protected void setField1Data(@MappingTarget MyDto target, MyEntity entity) {
//some code
}
@Named("method2")
@AfterMapping
protected void updateDto(@MappingTarget MyDto target, MyEntity entity) {
//some code
}
@Named("method3")
@AfterMapping
protected void resolveOwn(@MappingTarget MyDto dto) {
//some code
}
@Named("method4")
@AfterMapping
protected void mapPartial(@MappingTarget MyDto target, MyEntity entity) {
//some code
}
解决方案
MapStruct 不会忽略qualifiers
. 当您在BeanMapping#qualifiedByName
MapStruct 中定义多个限定符时,将尝试匹配所有这些限定符。这主要是为了让特定的合格类具有合格的方法。
推荐阅读
- css - 防止网格占据其父级的整个宽度
- python - 暂停 for 循环,保存进度并再次恢复?
- python - 在python中使用pandas读取带有文本的制表符分隔文件
- python - 如何使 Python 中的 Perlin 噪声/颜色渐变生成类似于 C++ 教程中的噪声?
- r - 如何跨多个列获得最常见的组合
- validation - Laravel 6.x 中的路由参数验证
- python - 初学者:Python 找不到“pyodbc”包?
- c - Win32 上的异步串行 I/O -- 如何创建警报事件
- php - 在接受 cookie 同意之前替换所有 youtube iframe
- java - 我需要从 List 的字符串中迭代数据,并从以下 JSON 的“MemberOf”参数中添加到另一个列表字符串中