mapstruct - Mapstruct @Mapper 的使用属性不起作用
问题描述
我的一个 Mapstruct 映射器没有使用另一个映射器@Mapper(uses =
我们ValidationSupportNeedMapper
从实体映射到 DTO。一个ValidationSupportNeedEntity
包含一个ActivityEntity
属性,我试图从这个属性映射到一个Activity
DTO。
因此,问题在于嵌套对象,即ActivityEntity
to Activity
。
这是源代码:
从ValidationSupportNeedMapper.java:
@Mapper(uses = {LifecycleErrorMessagesMapper.class, ActivityMapper.class})
public interface ValidationSupportNeedMapper {
ValidationSupportNeed toValidationSupportNeed(ValidationSupportNeedEntity source);
...
从ActivityMapper.java:
@Component
public class ActivityMapper {
public Activity toActivity(ActivityEntity activity) {
//Implementation
}
public ActivityEntity toActivityEntity(Activity activity) {
//Implementation
}
}
来自ValidationSupportNeedEntity.java(实体)
public class ValidationSupportNeedEntity {
private ActivityEntity activityEntity;
来自ValidationSupportNeed.java (DTO)
public class ValidationSupportNeed implements AutoValidated {
private Activity validationActivity;
然而 Mapstruct 似乎忽略了注释uses=
上的属性@Mapper
并继续生成自己的映射方法,如下所示:
@Override
public ValidationSupportNeed toValidationSupportNeed(ValidationSupportNeedEntity source) {
if ( source == null ) {
return null;
}
ValidationSupportNeed validationSupportNeed = new ValidationSupportNeed();
validationSupportNeed.setValidationActivity( validationSupportNeedEntityToActivity( source ) );
...
}
protected Activity validationSupportNeedEntityToActivity(ValidationSupportNeedEntity validationSupportNeedEntity) {
if ( validationSupportNeedEntity == null ) {
return null;
}
Activity activity = new Activity();
activity.setCode( validationSupportNeedEntity.getValidationActivityCode() );
return activity;
}
我错过了什么?有人可以帮忙吗?
编辑:ActivityMapper
没有自动装配到ValidationSupportNeedMapper
实现中。
解决方案
添加映射注释对问题进行了排序:
@Mapping(source = "activityEntity", target = "validationActivity")
ValidationSupportNeed toValidationSupportNeed(ValidationSupportNeedEntity source);
注意属性的名称是不同的。
推荐阅读
- angular - Angular - 动态更改标签文本
- angular - Angular:注入抽象依赖项
- c++ - 我们可以在 MFC 中挂钩函数调用吗?
- sql - SQL 选择日期在定义的日期范围内的项目
- h2 - 如何在 H2 中删除数据库?
- python - Python: make a derived class into a singleton
- android - Paging 3 - 为什么我的重试页脚没有调用我的 PagingSource 的加载方法?
- sapui5 - 如何在ui5/fiori表JSONModel中进行汇总
- java - 请求范围的 bean 在 Cucumber 的 Spring 测试中不起作用
- python-3.x - 如何使用 CDK Python 通过 lambda 访问跨区域 s3 存储桶