我正在嘗試查看是否將 aCab分配給 anyEmployee所以我可以獲取該EmployeeId 并簡單地將 cab 設定為null,但@OneToMany映射,只是回傳一個員工串列 & 通過這個我沒有得到任何方法cab.getEmp()來獲取員工詳細資訊
雇員.java
@Data
@Entity
@Table(name = "employee")
public class Employee {
@Id
private Integer id;
private String username;
private String password;
private String role;
private String dropLocation;
@ManyToOne(
cascade = CascadeType.ALL,
fetch = FetchType.EAGER
)
@JoinColumn(
name = "empCab",
referencedColumnName = "cabId"
)
public Cab cab;
}
Cab.java
@Data
@Entity
@Table(name = "cab")
public class Cab {
@Id
private Integer cabId;
private Integer cabNumber;
private String cabShift;
@OneToMany(
cascade = CascadeType.ALL,
fetch = FetchType.EAGER,
mappedBy= "cab"
)
private List<Employee> emp = new ArrayList<>();
}
控制器
@GetMapping("deleteCab")
public ModelAndView deleteCab(@RequestParam("id") Integer id, ModelAndView mvc){
Cab cab = cabRepo.findById(id).orElse(null);
if(cab!=null){
List<Employee> emp = cab.getEmp();
if(!cab.getEmp().isEmpty()){
//e1.setCab(null);
//empRepo.save(e1);
mvc.addObject("msg", "Cab deleted & an employee cab detail also got changed");
mvc.setViewName(NOTHING_JSP);
} else {
cabRepo.deleteById(id);
mvc.addObject("msg", "Cab removed from the database");
mvc.setViewName(NOTHING_JSP);
}
}
}
uj5u.com熱心網友回復:
在您的代碼中,Cab是 perent 類并且Employee是子類,您的目標是洗掉與父類的子類依賴關系。為此,您必須提取EmployeefromCab并洗掉與Cabusing的關系employee.setCab(null)。
@GetMapping("/deleteCab")
@ResponseBody
public ModelAndView deleteCab(@RequestParam("id") Integer id, ModelAndView mvc){
Cab cab = cabRepo.findById(id).orElse(null);
if(cab != null){
// Extract employee from cab
for(Employee emp: cab.getEmp())
{
// Remove the relationship with cab
emp.setCab(null);
}
cabRepo.save(cab);
mvc.addObject("msg", "Cab deleted & an employee cab detail also got changed");
mvc.setViewName(NOTHING_JSP);
} else {
cabRepo.deleteById(id);
mvc.addObject("msg", "Cab removed from the database");
mvc.setViewName(NOTHING_JSP);
}
return mvc;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/451698.html
上一篇:多對多關系回傳許多嵌套結果
