MapStruct conditionQualifiedByName 未在映射器的实现类中应用

问题描述 投票:0回答:1

conditionQualifiedByName 未在此处与mapstruct 一起应用。

@Setter
public class BaseUpdateEmployeeMapper extends BaseDesktopMapper<Source, Target> {
    @Named("isStringNotNullOrEmpty")
    public boolean isStringNotNullOrEmpty(String input) {
        return StringUtils.isNotEmpty(input);
    }
}

@Mapper
public abstract class EmployeeMapper extends BaseMapper {
    @Mappings({
        @Mapping(source="gender", target="gender", conditionQualifiedByName="isStringNotNullOrEmpty", qualifiedByName="toGender"),
        public abstract Target transformSource(Source employee);
}
@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    date = "2024-08-12T21:14:39+0530",
    comments = "version: 1.5.5.Final, compiler: javac, environment: Java 11.0.23 (Homebrew)"
)
public class Target extends EmployeeMapper {

    @Override
    public Target transformSource(Source employee) {
        if ( employee == null ) {
            return null;
        }

        Target.Builder target = Target.newBuilder();
        target.gender( toGender( employee.getGender() ) );

        return target.build();
    }
}

我想对字符串保留 null 和空检查,以避免将源性别映射到目标性别

如何解决这个问题?请帮忙

如果在 toGender() 之前进行检查,我希望能够使用 isStringNotNullOrEmpty 生成 Impl 代码,但只有 toGender 应用于映射员工性别。

mapping javabeans mapstruct
1个回答
0
投票

条件没有被应用的原因是条件方法(

isStringNotNullOrEmpty
)应该用
@Condition
注释才能被视为存在检查方法

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.