Предполагаемый тип 'S' для параметра типа 'S' находится за его пределами;следует расширить 'ua.com.store.entity.Country - PullRequest
0 голосов
/ 03 октября 2018

У меня проблема с моим CountryServiceImpl, когда я хочу реализовать метод findOne в CountryServiceImpl, он говорит мне: «Предполагаемый тип« S »для параметра типа« S »не входит в его пределы; должен расширять« ua.com.store.entity »..Страна".

Я хотел исправить сам, но я не понимаю, что это значит.Не могли бы вы помочь мне с этой проблемой.

Спасибо.

@Entity
@Getter
@Setter
@NoArgsConstructor
@ToString
public class Country {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    private String countryName;

    @OneToMany(mappedBy = "country")
    private Set<Brand> brands = new HashSet<Brand>();
}


public interface CountryDAO extends JpaRepository<Country, Integer> {

    @Query("from Country c where c.countryName=:name")
    Country findByCountryName(@Param("name") String name);
}


public interface CountryService {

    void save(Country country);
    void delete(Country country);
    List<Country> findAll();
    Country findOne(int id);
    Country findByCountryName(String name);
}


@Service
public class CountryServiceImpl implements CountryService {

    @Autowired
    private CountryDAO dao;

    @Override
    public void save(Country country) {
        dao.save(country);
    }

    @Override
    public void delete(Country country) {
        dao.delete(country);
    }

    @Override
    public List<Country> findAll() {
        return dao.findAll();
    }

    @Override
    public Country findOne(int id) {
        return dao.findOne(id);
    }

    @Override
    public Country findByCountryName(String name) {
        return dao.findByCountryName(name);
    }
}

Ответы [ 3 ]

0 голосов
/ 19 марта 2019

Можно быть актуальным по поводу весенне-загрузочной версии.Я сталкиваюсь с той же проблемой, когда моя версия с весенней загрузкой - 2.0.1.Но после изменения версии весенней загрузки на 1.5.9.RELEASE это разрешается.

0 голосов
/ 21 августа 2019

100% рабочий раствор выглядит следующим образом:

@Override
public Country findOne(int id) {
    return dao..findById(id).orElse(null);
}
0 голосов
/ 03 октября 2018

Spring документация определяет методы getOne следующим образом

<S extends T> Optional<S> findOne(Example<S> example)

В вашем методе ваш входной параметр имеет тип 'id' типа int, но не привязан к интерфейсу Example.

Чтобы найти сущность с ее 'id', вы можете использовать метод

Optional<T> findById(ID id)

В соответствии с вашей реализацией вы можете написать его

@Override
public Country findOne(int id) {
    return dao.findById(id);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...