Java 将数据插入表的多个关系

Java 将数据插入表的多个关系,java,jsp,spring-mvc,many-to-many,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"

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>();
@实体
公共类身份验证{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“authenticationId”)
长认证ID;
@列(name=“username”)
字符串用户名;
@列(name=“password”)
字符串密码;
@列(name=“confirmPassword”)
字符串确认密码;
@列(name=“ENABLED”)
int启用;
@ManyToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@JoinTable(name=“userrole”,joinColumns={
@JoinColumn(name=“authenticationId”,nullable=false,updateable=false)},inverseJoinColumns={@JoinColumn(name=“roleId”,nullable=false,updateable=false)})
Set 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>();
@实体
公共阶级角色{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
@列(name=“roleId”)
长罗莱德;
@列(name=“roleName”)
串烯丙胺;
@ManyToMany(fetch=FetchType.LAZY,mappedBy=“roleSetInAuthentication”)
Set authenticationSetInRole=new HashSet();
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";     
        }
@RequestMapping(value=“/admin”,method=RequestMethod.GET)
公共字符串显示表单(HttpServletRequest){
List roleList=adminService.getRoleCategory();
request.getSession().setAttribute(“roleList”,roleList);
返回“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>

分配角色--选择--
${r.roleName}

我使用的是spring mvc表单,创建了许多关系,因为其中生成了一个单独的表(userrole),字段为authenticationId roleId。我需要在(roleuser)中插入数据吗手动创建表,但我想我正在创建很多关系,所以数据应该自动插入到这个表中,但是在jsp中,如何编写代码和利用关系,以便数据应该自己插入到这个表中,而我不需要手动输入。我只是尝试admin.jsp bt,但没有完全得到它。

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

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

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

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

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


它完全是自动的,没有手动的。

你能告诉我你没有得到什么吗当管理员从dropdownlist中,为任何用户选择角色(来自RoleTable的详细信息)(来自AuthenticationTable的详细信息),第三个表中的数据,即(userrole表)shud自己插入,我们不需要手动在第三个表中输入数据,这意味着它是如何发生的。所以,当我将数据插入到身份验证中而不是角色表中时,然后在链接表中,它将如何插入这两个列(即authenticationId和roleId),因为我只是将数据插入到身份验证表中,而不是角色表中,这种情况下会发生什么。这意味着当我同时处理两个表时,数据会被插入到链接表othrwz中。不完全正确。问题是您可以使用级联选项。如果您选择级联操作,则插入一个身份验证-->角色,然后执行role将在插入Athentication时插入,反之亦然。