У меня есть 3 таблицы MySQL, и я использую их для настройки Spring Security с ролями.И я хочу заполнить 2 из них, используя RESTful.
Таблица пользователей:
Таблица ролей:
Таблица user_role (это таблица объединения):
Приложение работает успешно, но в данный момент я заполняю эти таблицы из MySQL Workbench и хочу заполнить их с помощью RESTful.Но я точно не знаю, как это сделать, как должен выглядеть объект JSON при выполнении запроса POST?Например, таблица ролей будет по умолчанию с этими двумя значениями: ROLE_ADMIN и ROLE_USER, поэтому я не хочу добавлять какие-либо новые значения в эту таблицу, но как добавить нового пользователя и заполнить пользовательскую таблицу и таблицу user_role?
Это сущности:
Сущность пользователя:
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.springframework.security.core.userdetails.UserDetails;
import javax.persistence.JoinColumn;
@Entity
@Table(name = "appuser")
public class ApplicationUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private long id;
private String username;
private String password;
@ManyToMany(fetch = FetchType.EAGER,
cascade = {CascadeType.DETACH, CascadeType.MERGE,
CascadeType.PERSIST, CascadeType.REFRESH})
@JoinTable(name = "appuser_role",
joinColumns = @JoinColumn(name = "appuser_id"),
inverseJoinColumns = @JoinColumn(name = "approle_id"))
private List<Role> authorities;
public ApplicationUser() {
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public List<Role> getAuthorities() {
return authorities;
}
public void setAuthorities(List<Role> authorities) {
this.authorities = authorities;
}
}
Роль сущности:
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import org.springframework.security.core.GrantedAuthority;
import com.fasterxml.jackson.annotation.JsonIgnore;
@Entity
@Table(name = "approle")
public class Role {
@Id
@Column(name = "role_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
private String authority;
@JsonIgnore
@ManyToMany(mappedBy = "authorities")
private Set<ApplicationUser> users = new HashSet<>();
public Role() {
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getAuthority() {
return authority;
}
public void setAuthority(String authority) {
this.authority = authority;
}
public Set<ApplicationUser> getUsers() {
return users;
}
public void setUsers(Set<ApplicationUser> users) {
this.users = users;
}
@Override
public String toString() {
return authority;
}
}