代码之家  ›  专栏  ›  技术社区  ›  dEs12ZER

用户/角色的系统,如何实现其他属性?

  •  0
  • dEs12ZER  · 技术社区  · 7 年前

    我正在使用Spring Boot开发一个应用程序,因此我使用的UML类有3个实体:

    1. 管理员(id、用户名、密码、电子邮件)
    2. 经理(id、用户名、密码、电子邮件、电话)
    3. 客户端(id、用户名、密码、电子邮件、电话、地址)

    管理员与Manager之间有一对多/多对一的映射 还有实体客户端的一对多/多对一。

    经过一些研究,我将其更改为用户/角色系统,因此实体用户 具有如下属性:

        public class AppUser implements Serializable {
    
        @Id @GeneratedValue
        private Long id;
        @Column(unique = true)
        private String username;
        private String password;
        @ManyToMany(fetch = FetchType.EAGER)
        private Collection<AppRole> roles = new ArrayList<>();
    }
    

    和角色实体

     public class AppRole implements Serializable {
    
            @Id @GeneratedValue
            private Long id;
            private String roleName;
    
    }
    

    我应该如何实现其他实体、经理和客户机,因为它们具有其他不同的属性?

    现在只有一个实体,我应该如何实现映射?

    提前谢谢你。

    1 回复  |  直到 7 年前
        1
  •  1
  •   UsamaAmjad    7 年前

    我想你应该把这些字段加进去 AppUser 在需要时初始化并插入数据。例如,创建时 Manager 您可以输入 admin_id 然后离开 client_id 空白的这就是 admin 也可以有多个 managers 在他下面。

    @Entity
    @Table(name = "AppUser")
    public class AppUser implements Serializable {
    
        @Id @GeneratedValue
        private Long id;
        @Column(unique = true)
        private String username;
        private String password;
        @Column(unique = true)
        private String email;
        @Column(unique = true)
        private String phone;
        private String address;
        @ManyToMany(fetch = FetchType.EAGER)
        @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
        private Collection<AppRole> roles = new ArrayList<>();
        @ManyToOne
        @JoinColumn(name = "client_id")
        private AppUser client;
        @ManyToOne
        @JoinColumn(name = "manager_id")
        private AppUser manager;
        @ManyToOne
        @JoinColumn(name = "admin_id")
        private AppUser admin;
    }
    

    然后你可以分别给出 roles 致各 appUser 根据您的要求。 如果您尚未使用 Spring Security 然后,您应该将其用于角色和权限。

    推荐文章