我的CountryServiceImpl遇到问题,当我想在CountryServiceImpl中实现方法findOne时,它告诉我“类型参数'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);
}
}
答案 0 :(得分:1)
Spring文档将方法getOne定义如下
Route::group(['prefix' => 'administration', 'middleware' => 'admin'], function(){
Route::get('/dashboard', 'Admin\DashboardController@index')->name('admin.dashboard');
});
在您的方法中,您的输入参数是int类型的'id',但不限于接口Example。
要找到带有“ id”的实体,可以使用方法
ERR_TOO_MANY_REDIRECTS
根据您的实现,您可以编写
<S extends T> Optional<S> findOne(Example<S> example)
答案 1 :(得分:1)
可能与spring-boot版本有关。当我的春季启动版本为2.0.1.RELEASE时,我遇到相同的问题。但是将spring-boot版本更改为1.5.9.RELEASE之后,就可以解决。
答案 2 :(得分:1)
以下是100%有效的解决方案:
@Override
public Country findOne(int id) {
return dao..findById(id).orElse(null);
}
答案 3 :(得分:1)
我刚刚在程序中解决了这个问题。我不使用findOne方法,我只是使用save方法保存初始数据。原来,我已经从另一个存储库接口复制了我的存储库接口,却忘记了将“扩展JpaRepository
答案 4 :(得分:0)
您需要更改 来自
public T getOne(ID id) {
return repository.getOne(id);
}
收件人
public Optional<T> getOne(ID id) {
return repository.findById(id);
}
答案 5 :(得分:0)
这对我有用...
@Override
public Country findOne(int id) {
return dao.findById(id).orElse(null);
}