mapstruct中的自定义方法

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

我想在我的映射器中创建一个自定义方法(使用mapstruct)。我的方法包括根据建议计算候选人的评分。 (每个推荐实体均包含候选人ID和等级)。我想使用mapper获得这些评分的平均值。

我尝试过这种方法:

 @Mapper(componentModel="spring")
 public interface  CandidateMapper extends GenericMapper<Candidate, CandidateDTO> 
{
    @Autowired
    RecommendationRepository recommendationRepository; 

     default  CandidateDTO  getRating( Candidate candidate ) {
     Integer ratingAverage = 0; 
     List<Recommendation>  recomList =  recommendationRepository.findRecommendationByRecommended(candidate);
     recomList.forEach( (item) ->{
         ratingAverage= ratingAverage+ item.getRating(); 
    });  
     CandidateDTO candidateDTO = new CandidateDTO(); 
     candidate.setRating( ratingAverage / recomList.size());
    return  candidateDTO  ; 
}  

但是我无法在此处自动装配存储库,但出现此错误:

 The blank final field recommendation Repository may not have been initialized

我该如何处理?

spring-boot mapstruct
1个回答
0
投票

您必须告诉映射器使用componentModel="spring"

@Mapper(componentModel="spring")
public interface  CandidateMapper extends GenericMapper<Candidate, CandidateDTO> 
{
    @Autowired
    RecommendationRepository recommendationRepository; 
...
} 
© www.soinside.com 2019 - 2024. All rights reserved.