【发布时间】:2021-06-16 14:42:13
【问题描述】:
在我的映射器类中,我有一个映射器,它将单个资源对象映射到 resourceDto。同样在 resourceDto 中,我有一个名为 favoured 的属性,它是通过 isResourceFavoured 方法手动映射的。
我有另一个映射器,它将资源列表映射到 resourceDtos 列表。
现在,我希望此方法通过自定义表达式为每个 resourceDto 映射偏好的属性,例如将单个资源的 isResourceFavoured 方法映射到 resourceDto 方法。
这怎么可能?可能是自动生成的注释,其中 Lists 的 resourceToResourceDto 方法使用相同的方法,但针对单个对象?
@Mapping(target = "courseId", source = "resource.course.id")
@Mapping(target = "favoured", expression = "java(isResourceFavoured(resource, userId))")
public abstract ResourceDto resourceToResourceDto(Resource resource, Long userId);
@Mapping(target = "courseId", source = "course.id")
public abstract List<ResourceDto> resourceToResourceDto(List<Resource> resources);
public boolean isResourceFavoured(Resource resource, Long userId) {
ApplicationUser user = userService.findApplicationUserById(userId);
return resourceService.isFavoured(resource, user);
}
【问题讨论】:
-
你的 ResourceDto 是否有 userId 的属性?
-
不,我通过身份验证变量将来自 Endpoint 的 userId 传递给映射器
标签: spring spring-boot jpa mapstruct mapper