MapStruct - Конвертер для возвращаемого значения типа не найден
Я хочу использовать записи из java 14 с сущностью (из сохраняемости java). Я пытаюсь сопоставить своего пользователя с userDto, и мой отладчик показывает, что все правильно сопоставлено. Но, к сожалению, я получил ошибку, когда хочу распечатать свой userDto:
Resolved [org.springframework.http.converter.HttpMessageNotWritableException: No converter found for return value of type: class xxx.UserMicroservice.dto.UserDto]
Что я делаю не так?
public interface UserMapper {
UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);
UserDto mapToUserDto(User user);
}
public class UserMapperImpl implements UserMapper {
@Override
public UserDto mapToUserDto(User user) {
if(user == null) {
return null;
}
UserDto userDto = new UserDto(user.getName(), user.getEmail(), user.getImageUrl());
return userDto;
}
}
public record UserDto(
String name,
String email,
String imageUrl) {}
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/user/me")
@PreAuthorize("hasRole('USER')")
public UserDto getCurrentUser(@CurrentUser UserPrincipal userPrincipal) {
UserDto userDto = UserMapper.INSTANCE.mapToUserDto(userRepository.findById(userPrincipal.getId())
.orElseThrow(() -> new ResourceNotFoundException("User", "id", userPrincipal.getId())));
return userDto;
}
}