[英]“Column not found” when joining table in SpringBoot
我是 spring 啟動的新手,現在我正在嘗試加入兩個表,其中一個是復合表(如果它有任何影響,idk)。 請查看我的代碼並幫助我。
員工.java(型號)
@Entity
@Table(name = "employees")
public class Employees {
@Id
@Column(name = "emp_no")
private long emp_no;
@Column(name = "name")
private String name;
}
Salaries.java(型號,復合表)
@Entity @Table(name = "salaries") public class Salaries { @Column(name = "emp_no") //Primary Key private long emp_no; @Column(name = "salary") private int salary; @Column(name = "date") //Primary Key private LocalDate date; }
EmployeeRepo.java(存儲庫)
public interface EmployeesRepository extends JpaRepository<Employees, Long> { String salary = "SELECT employees.name, salaries.salary FROM employees INNER JOIN salaries ON employees.emp_no=salaries.emp_no LIMIT 0,10"; @Query(value=salary, nativeQuery = true) List<Employees> getUserSalary(); }
EmpController.java(控制器)
@GetMapping("/salary") public ResponseEntity<List<Employees>> getSalaries(@RequestParam(required = false) String args){ List<Employees> employees = new ArrayList<Employees>(); employeesRepository.getUserSalary().forEach(employees::add); if(employees.isEmpty()){ return new ResponseEntity<>(employees, HttpStatus.NO_CONTENT); } return new ResponseEntity<>(employees, HttpStatus.OK); }
應用程序屬性
spring.datasource.url= jdbc:mysql://127.0.0.1:3306/employees?useSSL=false spring.datasource.username= "" spring.datasource.password= "" spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.hibernate.ddl-auto= update
和錯誤信息:
未找到列“emp_no”。
我不明白為什么當我在 db 中的表上都有emp_no
列時會出現此錯誤。
我猜你的問題是
String salary = "SELECT employees.name, salaries.salary FROM employees INNER JOIN salaries ON employees.emp_no=salaries.emp_no LIMIT 0,10";
@Query(value=salary, nativeQuery = true)
List<Employees> getUserSalary();
您正在嘗試在只有 emp_no, name 的員工中保存 name,salary。 所以錯誤是你已經映射了名稱,但 emp_no 不能從查詢中獲得。 如下創建 POJO/模型
public class EmpSalary {
private String name;
private double salary;
}
然后更新您的存儲庫以返回 EmpSalary
String salary = "SELECT employees.name, salaries.salary FROM employees INNER JOIN salaries ON employees.emp_no=salaries.emp_no LIMIT 0,10";
@Query(value=salary, nativeQuery = true)
List<EmpSalary> getUserSalary();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.