Я не знаю, почему я получаю NullPointerException
в хранилище, когда пытаюсь вызвать конечную точку GET. NullPointer находится в строке 40 CountryController. java, но он генерируется в строке 43 - linkTo()
вызывает исключение NullPointerException.
Я пытался использовать @Autowired
в операторе, но также и в конструкторе, и он все еще нулевой.
package com.footballstats.footballstats.ranking;
import org.springframework.hateoas.CollectionModel;
import org.springframework.hateoas.EntityModel;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.stream.Collectors;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.linkTo;
import static org.springframework.hateoas.server.mvc.WebMvcLinkBuilder.methodOn;
@RestController
public class CountryController {
private final CountryRepository countryRepository;
public CountryController(CountryRepository countryRepository) {
this.countryRepository = countryRepository;
}
@GetMapping("/countries")
public CollectionModel<EntityModel<Country>> findAll() {
List<EntityModel<Country>> countries = countryRepository.findAll().stream()
.map(country -> new EntityModel<>(country,
linkTo(methodOn(CountryController.class).getById(country.getId())).withSelfRel(),
linkTo(methodOn(CountryController.class).findAll()).withRel("countries")))
.collect(Collectors.toList());
return new CollectionModel<>(countries,
linkTo(methodOn(CountryController.class).findAll()).withSelfRel());
}
@GetMapping("/countries/{id}")
private EntityModel<Country> getById(@PathVariable Long id) {
Country country = countryRepository.findById(id).orElseThrow(() -> new CountryNotFoundException(id));
return new EntityModel<>(country,
linkTo(methodOn(CountryController.class).getById(id)).withSelfRel(),
linkTo(methodOn(CountryController.class).findAll()).withRel("countries"));
}
}