我的项目的目的是拥有管理员/经理/员工/客户。登录后,根据角色的用户将具有以下功能:
- 更新员工列表中的员工信息(经理、管理员)
- 查看客户列表(经理、管理员、员工)
- 更新用户自己的信息(经理、管理员、员工、客户)
我已经困扰了几周的问题是,当更新任何用户信息时,它会自动从数据库中删除该用户角色。这将删除他们对网络应用程序的访问权限。
我做了一些研究试图解决这个问题,但还没有找到可靠的答案。任何帮助将不胜感激,谢谢!
员工.java
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "employee_roles",
joinColumns = @JoinColumn(name = "employee_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Collection<Role> roles;
EmployeeController.java -
@PostMapping("/saveEmployee")
public String saveEmployee(@ModelAttribute("employee") Employee theEmployee) {
employeeService.saveEmployee(theEmployee);
return "redirect:/employee/list";
}
EmployeeDaoImpl.java -
@Override
public void saveEmployee(Employee theEmployee) {
// get current hibernate session
Session currentSession = sessionFactory.getCurrentSession();
// save Employee
currentSession.update(theEmployee);
}
日志 -
Hibernate: update employee set address=?, email=?, first_name=?, last_name=?, password=?, phone_number=?, username=?, zipcode=? where id=?
Hibernate: delete from employee_roles where employee_id=?
编辑:
角色.java
Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
public Role() {
}
public Role(String name) {
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Role{" + "id=" + id + ", name='" + name + '\'' + '}';
}
}
最佳答案
您可以将这些代码添加到您的 Role 类中:
@ManyToMany(mappedBy="roles")
private Collection<Employee> employees;
关于java - Hibernate用户更新删除用户角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55227164/