Java 推断类型';S';对于类型参数';S';不在其范围之内;应扩展到';ua.com.store.entity.Country
我的CountryServiceImpl有一个问题,当我想在CountryServiceImpl中实现findOne方法时,它告诉我“类型参数的推断类型”不在其范围内;应该扩展“ua.com.store.entity.Country” 我想自己修复,但我不明白这意味着什么。 你能帮我解决这个问题吗 多谢各位Java 推断类型';S';对于类型参数';S';不在其范围之内;应扩展到';ua.com.store.entity.Country,java,spring,spring-mvc,spring-boot,Java,Spring,Spring Mvc,Spring Boot,我的CountryServiceImpl有一个问题,当我想在CountryServiceImpl中实现findOne方法时,它告诉我“类型参数的推断类型”不在其范围内;应该扩展“ua.com.store.entity.Country” 我想自己修复,但我不明白这意味着什么。 你能帮我解决这个问题吗 多谢各位 @实体 @吸气剂 @塞特 @诺尔格构装师 @托斯特林 公营国家{ @身份证 @GeneratedValue(策略=GenerationType.IDENTITY) 私有int-id; 私有字
@实体
@吸气剂
@塞特
@诺尔格构装师
@托斯特林
公营国家{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
私有int-id;
私有字符串countryName;
@OneToMany(mappedBy=“国家”)
private Set brands=new HashSet();
}
公共接口CountryDAO扩展了JpaRepository{
@查询(“来自c国,其中c.countryName=:name”)
Country findByCountryName(@Param(“name”)字符串名);
}
公共接口服务{
无效保存(国家);
作废删除(国家);
列出findAll();
国家财政司司长(国际id);
国家/地区findByCountryName(字符串名称);
}
@服务
公共类CountryServiceImpl实现CountryService{
@自动连线
私家道道;
@凌驾
公共无效保存(国家/地区){
拯救(国家);
}
@凌驾
公共无效删除(国家/地区){
删除(国家);
}
@凌驾
公共列表findAll(){
返回dao.findAll();
}
@凌驾
公共国家/地区findOne(内部id){
返回dao.findOne(id);
}
@凌驾
公共国家/地区findByCountryName(字符串名称){
返回dao.findByCountryName(name);
}
}
Spring文档定义方法getOne如下
<S extends T> Optional<S> findOne(Example<S> example)
可能与spring启动版本有关。当我的spring boot版本是2.0.1.0版本时,我遇到了同样的问题。但在将spring boot版本更改为1.5.9.0版本后,问题得到解决。一个100%可行的解决方案如下:
@Override
public Country findOne(int id) {
return dao..findById(id).orElse(null);
}
你需要改变
从
到
public可选getOne(ID){
返回repository.findById(id);
}
我刚刚在程序中解决了这个问题。我没有使用findOne方法,我只是用save方法保存初始数据。原来我是从另一个repo接口复制了我的repo接口,忘了将“extends JpaRepository”中的对象更新为新对象。这对我来说很有效
您是否有证据证实这一点?它存在于名为spring data commons的jar库中。SpringDataCommons jar库依赖于SpringBootStarter数据jpa库。当我的依赖项是org.springframework.boot:springbootstarter数据jpa:1.5.9.RELEASE时,代码
类org.springframework.data.repository.crudepository
公共接口crudepository扩展了存储库
当我的依赖项为org.springframework.boot:spring boot starter数据jpa:2.0.1.RELEASE
,,代码org.springframework.data.repository.query.QueryByExampleExecutor
公共接口QueryByExampleExecutor
,当2.0.1.RELEASE版本发布时,没有Crudepository接口文件。顺便说一句,这里有一个示例。感谢您的回复,请将其编辑到您的答案中,以便帮助未来的访问者。:)getOne是JPA还原的方法,findById是CRUDE还原的方法,我想你们现在会明白的
@Override
public Country findOne(int id) {
return dao.findById(id);
}
@Override
public Country findOne(int id) {
return dao..findById(id).orElse(null);
}
public T getOne(ID id) {
return repository.getOne(id);
}
public Optional<T> getOne(ID id) {
return repository.findById(id);
}
@Override
public Country findOne(int id) {
return dao.findById(id).orElse(null);
}