Mapstruct @Mapper 的使用属性不起作用
Mapstruct @Mapper's uses attribute not working
我遇到一个问题,我的一个 Mapstruct 映射器没有将另一个映射器与 @Mapper(uses =
一起使用
我们的 ValidationSupportNeedMapper
从实体映射到 DTO。一个 ValidationSupportNeedEntity
包含一个 ActivityEntity
属性,我正在尝试从这个 属性 映射到一个 Activity
DTO。
因此,问题出在嵌套对象上,即 ActivityEntity
到 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 似乎忽略了 @Mapper
注释上的 uses=
属性并继续生成自己的映射方法,如下所示:
@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);
请注意属性的名称不同。
我遇到一个问题,我的一个 Mapstruct 映射器没有将另一个映射器与 @Mapper(uses =
我们的 ValidationSupportNeedMapper
从实体映射到 DTO。一个 ValidationSupportNeedEntity
包含一个 ActivityEntity
属性,我正在尝试从这个 属性 映射到一个 Activity
DTO。
因此,问题出在嵌套对象上,即 ActivityEntity
到 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 似乎忽略了 @Mapper
注释上的 uses=
属性并继续生成自己的映射方法,如下所示:
@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);
请注意属性的名称不同。