我试图查看是否将cab分配给任何员工,这样我就可以获取该员工Id,并简单地将cab设置为null,但映射为@OneToMany
,只需返回一个员工列表&;通过这种方式,我不会得到任何像cab.getEmp()
这样的获取员工详细信息的方法
Employee.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<>();
Controller
@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);
}
}