В моем классе объектов User есть поле SystemRole, которое используется для связи с другим классом.
Класс пользователя:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;
@Column(name = "username", nullable = false)
private String username;
@Column(name = "name")
private String name;
@Enumerated(EnumType.STRING)
@Column(name = "state")
private State state;
@Column(name = "password", nullable = false)
private String password;
@JoinColumn(name = "role_id", nullable = false)
@ManyToOne(fetch = FetchType.EAGER)
private SystemRole role;
Класс SystemRole:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private long id;
@Column(name = "name")
private String roleName;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
@JoinTable(name = "system_role_permission", joinColumns = {
@JoinColumn(name = "id", nullable = false)},
inverseJoinColumns = {@JoinColumn(name = "permission_id", nullable = false)})
private List<Permission> permissionList = new ArrayList<Permission>();
Поэтому, когда я обновляю конкретного пользователя, я заполняю поле SystemRole
id. И затем связывание значения идентификатора с объектом пользователя. Здесь я хочу также связать roleName
. Как я могу это сделать?
На данный момент все значения roleName являются обязательными.
фрагмент кода в представлении:
<div class="form-group">
<label>Role</label>
<form:select class="form-control"
required="required" path="role.id">
<c:forEach items="${roles}" var="role">
<form:option value="${role.id}" label="${role.roleName}"/>
<form:input value="${role.roleName}" type="hidden" path="role.roleName"/>
</c:forEach>
</form:select>
</div>