身份验证.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而不是完全正确的。
答案 0 :(得分:0)
第三个表称为链接表。 n:m关系身份验证中的每一个都有多个角色,反之亦然。
因此,在对象级别身份验证中,角色和角色的集合具有身份验证的集合。
插入表ORM时,首先将数据插入到角色和身份验证中。角色ID和身份验证ID将插入到链接表中。
从身份验证中删除一个角色时,它只删除链接表条目,反之亦然。
在检索角色时,它将从链接表的引用获取身份验证,反之亦然。
完全自动无手动。