【发布时间】:2018-01-15 17:19:04
【问题描述】:
我正在尝试创建以下表格,以便在用户注册时获取用户信息。
根据我在互联网上阅读的教程,我需要创建四个实体类,即我已经完成的 USER、USER_DETAILS、ROLE 和 USER_ROLE。但是我的问题是,当我想在我的应用程序中创建用户时,我是否必须有 4 种不同的发布方法,或者有没有一种方法可以一次性将用户数据添加到相关表中。
我希望能够将数据发布到单个 url,并且当用户提供所有详细信息时,所有这些带有外键的表都会立即填充。
类似:
{
"userName": “ME",
"password": "1234”,
“DOB": “1988-05-12",
"email": “test@test.org",
“role": “admin",
"country": "Ireland",
"registrationLocation": "Dublin",
"timeStamp": "18-01-2018T12:23:08"
}
将其发布到单个 url,例如:localhost:8080/live/api
这是我的代码:
用户详情
public class UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private Users user;
@NotBlank
private String DOB;
public UserDetails() {
}
public UserDetails( String DOB) {
this. DOB = DOB;
}
public String getDOB() {
return DOB;
}
public void setTitle(String DOB) {
DOB = DOB;
}
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "userID")
public Users getUser() {
return user;
}
用户
@Entity
@Table(name = "Users",
uniqueConstraints =
{
@UniqueConstraint(columnNames = "email"),
@UniqueConstraint(columnNames = "username")
}
)
public class Users implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long userID;
@NotBlank
@Size(min = 5, max = 100, message = "Please enter between 8 and 100 characters.")
private String password;
@NotBlank
private String username;
private Role role;
public Users() {
}
public Users(long userID, String password, String username, Role role) {
this.userID = userID;
this.password = password;
this.username = username;
this.role = role;
}
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "roleID")
public Role getRoles() {
return role;
}
public long getUserID() {
return userID;
}
public void setUserID(long userID) {
this.userID = userID;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
}
用户角色
@Entity
public class UserRole implements Serializable {
private Role role;
private Users user;
public UserRole() {
}
public UserRole(Role role, Users user) {
this.role = role;
this.user = user;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
public Users getUser() {
return user;
}
public void setUser(Users user) {
this.user = user;
}
}
控制器类方法
@RequestMapping(method = RequestMethod.POST, value = "/api/usermanagement/users")
public Response createUser(@Valid @RequestBody Users user){
return userService.AddUser(user);
}
【问题讨论】:
-
你的java代码在哪里?你尝试过这个问题吗?见link
-
让我过去我的课
标签: java api jpa spring-boot endpoint