Java MapStruct@Mapping不带源参数

Java MapStruct@Mapping不带源参数,java,mapstruct,Java,Mapstruct,我需要将dto转换为实体,而实体有一个字段要填充,它不需要dto的任何字段。实际上,@Mapping注释没有任何源代码 让我们用这个简单的例子来说明: public class Employee { private String firstName; private String customId; } public class EmployeeDto { private String firstName; } 正如您所能看到的,Employee实体的customId

我需要将
dto
转换为
实体
,而
实体
有一个字段要填充,它不需要
dto
的任何字段。实际上,
@Mapping
注释没有任何源代码

让我们用这个简单的例子来说明:

public class Employee {
    private String firstName;
    private String customId;
}

public class EmployeeDto {
    private String firstName;
}
正如您所能看到的,
Employee
实体的
customId
字段在
EmployeeDTO
中不存在

此外,我还有以下
格式化程序
。显然,我创建了一个
@CustomIdGenerator
@interface

public class EmployeeFormatter {
    @CustomIdGenerator
    public static String simulationIdGenerator() {
       return // businessLogic
    }
}
最后,我的地图绘制程序如下所示:

@Mapper(uses = EmployeeFormatter.class)
public abstract class EmployeeMapper {

    @Mapping(target = "customId", qualifiedBy = customIdGenerator.class)
    public abstract Employee toEmployee(EmployeeDTO dto);

}
但在生成的类中,它不起作用。您知道是否有任何方法可以使用不带参数的映射器吗

谢谢你的帮助;)

编辑:

根据@Nikolai Shevchenko的回复,以下代码有效:

  @AfterMapping
    void setCustomId(@MappingTarget Employee employee) {
        employee.setCustomId(EmployeeFormatter.customIdGenerator());
    }
@Mapper
公共抽象类EmployeeMapper{
@映射
公开摘要雇员对雇员(雇员对dto);
@后映射
无效mapCustomId(员工来源,@MappingTarget EmployeeDTO dto){
dto.setCustomId(EmployeeFormatter.simulationIdGenerator())
}
}
@Mapper
公共抽象类EmployeeMapper{
@映射
公开摘要雇员对雇员(雇员对dto);
@后映射
无效mapCustomId(员工来源,@MappingTarget EmployeeDTO dto){
dto.setCustomId(EmployeeFormatter.simulationIdGenerator())
}
}

您可以像这样尝试在映射中使用表达式字段(另一种不使用源参数的方法)


您可以像这样尝试在映射中使用expression字段(另一种不使用source param的方法)


伟大的感谢您的回复,但根据您的回复,可以用简单的方式完成。检查我的帖子编辑;)伟大的感谢您的回复,但根据您的回复,可以用简单的方式完成。检查我的帖子编辑;)
@Mapper(uses = EmployeeFormatter.class)
public abstract class EmployeeMapper {

    @Mapping(target = "customId", expression = "java(getCustomId())")
    public abstract Employee toEmployee(EmployeeDTO dto);

    public String getCustomId() {
        return EmployeeFormatter.customIdGenerator();
    }

}