NullPointerException репозиторий на getById - PullRequest
0 голосов
/ 03 апреля 2020

Я не знаю, почему я получаю 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"));

}

}

...