Обновление пользователя в спящем режиме удаляет роль пользователя - PullRequest
1 голос
/ 18 марта 2019

Цель моего проекта - иметь администраторов / менеджеров / сотрудников / клиентов.После входа в систему пользователь в зависимости от роли будет иметь следующие функции:

  1. Обновление информации о сотрудниках в списке сотрудников (менеджеры, администраторы)
  2. Просмотр списка клиентов (менеджеры, администраторы, сотрудники)
  3. Обновление собственной информации пользователей (менеджер, администратор, сотрудник, клиенты)

Проблема, на которой я застрял в течение нескольких недель, заключается в том, что при обновлении любой информации о пользователях она автоматически удаляет эту информацию.роль пользователей из базы данных.Это лишает их доступа к веб-приложению.

Я провел некоторое исследование, пытаясь выяснить это, но не нашел надежного ответа.Любая помощь будет оценена, спасибо!

Employee.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=?

редактировать:

Role.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 + '\'' + '}';
}
}

1 Ответ

0 голосов
/ 18 марта 2019

Вы можете добавить этот код в свой класс ролей:

@ManyToMany(mappedBy="roles")
private Collection<Employee> employees;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...