Java Hibernate用户更新删除用户角色
我的项目的目的是拥有管理员/经理/员工/客户。登录后,用户(取决于角色)将具有以下功能:Java Hibernate用户更新删除用户角色,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我的项目的目的是拥有管理员/经理/员工/客户。登录后,用户(取决于角色)将具有以下功能: 更新员工列表中的员工信息(经理、管理员) 查看客户列表(经理、管理员、员工) 更新用户自己的信息(经理、管理员、员工、客户) 几个星期以来我一直在讨论的问题是,当更新任何用户信息时,它会自动从数据库中删除该用户角色。这将从web应用程序中删除他们的访问权限 我做了一些研究试图弄明白这一点,但还没有找到确切的答案。任何帮助都将不胜感激,谢谢 Employee.java @ManyToMany(fetch =
@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;
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 + '\'' + '}';
}
}
您可以将以下代码添加到角色类:
@ManyToMany(mappedBy="roles")
private Collection<Employee> employees;
@ManyToMany(mappedBy=“角色”)
私人收藏员工;
您可以将这些代码添加到角色类中:
@ManyToMany(mappedBy="roles")
private Collection<Employee> employees;
@ManyToMany(mappedBy=“角色”)
私人收藏员工;
感谢您的回复,我用角色classThank Josep更新了帖子,感谢您提供信息。我将首先尝试提高我的声誉。我添加了代码,但没有改变结果。问题似乎是会话没有保留users角色,导致它返回null。由于hibernate看到null,它决定删除数据库中的关系。感谢您的回复,我用角色ClassThank Josep更新了帖子,感谢您提供的信息。我将首先尝试提高我的声誉。我添加了代码,但没有改变结果。问题似乎是会话没有保留users角色,导致它返回null。由于hibernate看到null,它决定删除数据库中的关系。更新时,Employee中的角色
字段可能为null。尝试在代码中使用断点,并在更新employee之前查看该字段。似乎是这样,我添加了一个sysout System.out.println(“这是employees角色”+theEmployeee.getRoles());它返回“This is the employees roles null”您能提供您要发送的json吗?我没有在添加jsp文件后为这个项目使用json/Restful:。sysout日志返回[Role{id=null,name='Role{id=3'},Role{id=null,name='name='Role\u ADMIN'}],更新时,Employee中的字段roles
可能为null。尝试在代码中使用断点,并在更新employee之前查看该字段。似乎是这样,我添加了一个sysout System.out.println(“这是employees角色”+theEmployeee.getRoles());它返回“This is the employees roles null”您能提供您要发送的json吗?我没有在添加jsp文件后为这个项目使用json/Restful:。sysout日志返回[Role{id=null,name='Role{id=3'},Role{id=null,name='name='Role\u ADMIN'}]