我想在我的映射器中创建一个自定义方法(使用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
我该如何处理?
您必须告诉映射器使用componentModel="spring"
:
@Mapper(componentModel="spring")
public interface CandidateMapper extends GenericMapper<Candidate, CandidateDTO>
{
@Autowired
RecommendationRepository recommendationRepository;
...
}