java - 类型参数“S”的推断类型“S”不在其范围内;应该扩展“com.example.srilanka.model.Employee”
问题描述
Inferred type 'S' for type parameter 'S' is not within its bound; should extend 'com.example.srilanka.model.Employee'
我在参与 Spring Boot 项目时遇到了上述错误( )。我已经在 stackoverflow 和其他教程中提到了该主题下的所有文章。但我还没有找到解决方案。
package com.example.srilanka.dao;
import com.example.srilanka.model.Employee;
import com.example.srilanka.repository.EmployeeRepository;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.List;
public class EmployeeDAO {
@Autowired
EmployeeRepository employeeRepository;
/*to save an employee*/
public Employee save(Employee emp){
return employeeRepository.save(emp);
}
/*search all employees*/
public List<Employee> findAll(){
return employeeRepository.findAll();
}
/*update an employee by id*/
public Employee findOne(int empId){
return employeeRepository.findOne(empId); /*<----------error arise in here
}
/*get an employee*/
/*delete an emmployee*/
}
我的 EmployeeRepository 在这里
package com.example.srilanka.repository;
import com.example.srilanka.model.Employee;
import org.springframework.data.jpa.repository.JpaRepository;
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {
}
解决方案
从文档findOne返回一个 Optional<S>
public <S extends T> Optional<S> findOne(Example<S> example)
因此,您有两种方法.orElse(null)
,即使对象不存在,也可以获取 null :
return employeeRepository.findOne(empId).orElse(null);
否则将方法的类型更改为Optional
public Optional<Employee> findOne(int empId) {
return employeeRepository.findOne(empId);
}
或者,如果对象不存在,您甚至可以使用它orElseThrow
来引发异常。
推荐阅读
- python - Pyinstaller 不工作:base_library.zip 上的权限被拒绝
- java - 你如何给 ScheduledExecutor 服务一个最大的时间来继续启动新线程?
- python - 使用 np.linalg.svd() 查找特征向量和特征值?
- javascript - npm run build 失败并显示“错误:自定义关键字定义无效:data.errors 应该是布尔值”
- ruby - 错误:在任何来源中都找不到 sqlite3-1.4.0
- python - 如何编写一个函数来查找较大字符串中子字符串的位置而不使用“查找”函数?
- c++ - 人们是否使用类作为他们的“游戏循环”?
- r - 如何确定data.table的每一列中包含空字符串(“”)的行数?
- sql - SQL查询在计数后不会返回零
- angular - Angular 6 上的 ExpressionChangedAfterItHasBeenCheckedError 使用时