我有一个Post实体和一个Post,目前正在尝试将DTO映射到实体,但是它给了我一个
Qualifier error. No method found annotated with @Named#value: [ getUserByUsername ].
--任何帮助都会非常感谢,这些是我当前的文件:
PostDTO:
@Getter
@Setter
public class PostDTO {
private String author;
@Size(max = 755)
private String content;
}
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {MappingUtil.class, PostRepository.class})
public interface PostMapper {
// since the author attribute on postDTO is a String, we use mapstruct to find
// within our database the matching user to that username and return the user object
@Mapping(source = "author", target = "author", qualifiedByName = {"getUserByUsername"})
Post toEntity(PostDTO postDTO);
PostDTO toDTO(Post post);
}
MappingUtils:
@Component
public class MappingUtil {
private final UserRepository userRepository;
MappingUtil(UserRepository userRepository) {
this.userRepository = userRepository;
@BeanMapping(qualifiedByName = "getUserByUsername")
public User getUserByUsername(String username){
return userRepository.findByUsername(username);
}
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {MappingUtil.class, PostRepository.class})
public interface PostMapper {
// since the author attribute on postDTO is a String, we use mapstruct to find
// within our database the matching user to that username and return the user object
@Mapping(source = "author", target = "author", qualifiedByName = "getUserByUsername")
Post toEntity(PostDTO postDTO);
PostDTO toDTO(Post post);
@Component
public class MappingUtil {
private final UserRepository userRepository;
MappingUtil(UserRepository userRepository) {
this.userRepository = userRepository;
@Named("getUserByUsername")
public User getUserByUsername(String username){
return userRepository.findByUsername(username);
}