ManytoMany关系将数据插入表中

时间:2014-12-12 13:40:27

标签: java jsp spring-mvc many-to-many

身份验证.java

        @Entity
        public class Authentication {

            @Id
            @GeneratedValue(strategy=GenerationType.AUTO)
            @Column(name="authenticationId")
            long authenticationId;

            @Column(name="username")
            String username;

            @Column(name="password")
            String password;

            @Column(name="confirmPassword")
            String confirmPassword;

            @Column(name="ENABLED")
            int enabled;

            @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
            @JoinTable(name = "userrole",joinColumns = { 
            @JoinColumn(name = "authenticationId", nullable = false, updatable = false)},       inverseJoinColumns = { @JoinColumn(name = "roleId", nullable = false, updatable = false) })
            Set<Role> roleSetInAuthentication = new HashSet<Role>();

角色.java

    @Entity
    public class Role {

        @Id
        @GeneratedValue(strategy=GenerationType.AUTO)
        @Column(name="roleId")
        long roleId;

        @Column(name="roleName")
        String roleName;    

        @ManyToMany(fetch = FetchType.LAZY, mappedBy = "roleSetInAuthentication")
        Set<Authentication> authenticationSetInRole = new HashSet<Authentication>();

AdminController.java

        @RequestMapping(value = "/admin", method = RequestMethod.GET)
           public String displayForm(HttpServletRequest request) {
            List<Role> roleList = adminService.getRoleCategory();
            request.getSession().setAttribute("roleList", roleList);
            return "admin";     
        }

admin.jsp

            <form:select path="">
            Assign Role<option value="SELECT">--SELECT--</option>
            <c:forEach var="r" items="${roleList}">
            <option value="${r.roleId}">${r.roleName}</option>
            </c:forEach>
            </form:select>

我正在使用spring mvc表单,创建了许多关系becoz,其中一个单独的表(userrole)正在生成,有字段作为authenticationId,roleId.Do我需要手动插入(roleuser)表中的数据,但我猜测我正在建立多种关系,所以数据shud会自动插入到这个表中,但是在jsp中如何编写代码并使用关系使得数据shud自己插入到这个表中,而我不需要手动输入.i只是在尝试使用admin.jsp而不是完全正确的。

1 个答案:

答案 0 :(得分:0)

第三个表称为链接表。 n:m关系身份验证中的每一个都有多个角色,反之亦然。

因此,在对象级别身份验证中,角色和角色的集合具有身份验证的集合。

插入表ORM时,首先将数据插入到角色和身份验证中。角色ID和身份验证ID将插入到链接表中。

从身份验证中删除一个角色时,它只删除链接表条目,反之亦然。

在检索角色时,它将从链接表的引用获取身份验证,反之亦然。

完全自动无手动。