Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate用户更新删除用户角色_Java_Spring_Hibernate_Spring Mvc - Fatal编程技术网

Java Hibernate用户更新删除用户角色

Java Hibernate用户更新删除用户角色,java,spring,hibernate,spring-mvc,Java,Spring,Hibernate,Spring Mvc,我的项目的目的是拥有管理员/经理/员工/客户。登录后,用户(取决于角色)将具有以下功能: 更新员工列表中的员工信息(经理、管理员) 查看客户列表(经理、管理员、员工) 更新用户自己的信息(经理、管理员、员工、客户) 几个星期以来我一直在讨论的问题是,当更新任何用户信息时,它会自动从数据库中删除该用户角色。这将从web应用程序中删除他们的访问权限 我做了一些研究试图弄明白这一点,但还没有找到确切的答案。任何帮助都将不胜感激,谢谢 Employee.java @ManyToMany(fetch =

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

  • 更新员工列表中的员工信息(经理、管理员)
  • 查看客户列表(经理、管理员、员工)
  • 更新用户自己的信息(经理、管理员、员工、客户)
  • 几个星期以来我一直在讨论的问题是,当更新任何用户信息时,它会自动从数据库中删除该用户角色。这将从web应用程序中删除他们的访问权限

    我做了一些研究试图弄明白这一点,但还没有找到确切的答案。任何帮助都将不胜感激,谢谢

    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;
    
    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'}]