java - Hibernate用户更新删除用户角色

标签 java spring hibernate spring-mvc

我的项目的目的是拥有管理员/经理/员工/客户。登录后,根据角色的用户将具有以下功能:

  1. 更新员工列表中的员工信息(经理、管理员)
  2. 查看客户列表(经理、管理员、员工)
  3. 更新用户自己的信息(经理、管理员、员工、客户)

我已经困扰了几周的问题是,当更新任何用户信息时,它会自动从数据库中删除该用户角色。这将删除他们对网络应用程序的访问权限。

我做了一些研究试图解决这个问题,但还没有找到可靠的答案。任何帮助将不胜感激,谢谢!

员工.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/

相关文章:

java - ActiveMQ发送和接收XML文件的文件夹

java - hibernate "repeated column in mapping for entity"错误

hibernate - 在内存数据库(HSQLDB或H2)上使用多个架构域运行grails

mysql/javaexecuteUpdate如何返回匹配的行和更新的行

java - java的compareTo()函数中字符的层次结构

java - 连接的显示器名称

java - GlassFish 服务器 core.jar 不包含在已安装的 bundle 列表中

java - 如何在jsp中使用enumset.contains?

java - Spring,从异常中获取多个模型违规

Spring data Rest - 有没有办法限制支持的操作?