【问题标题】:How to creating a single endpoint with multiple endpoints connecting to it如何创建具有多个连接到它的端点的单个端点
【发布时间】: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


【解决方案1】:

您可以像给出示例一样将所有相关信息发布到 1 个端点,然后从 UserService 类(最好是 Impl 类)中调用所有相关方法来保存相关详细信息。例如,

@Service
public class UserServiceImpl implements UserService {

public Response addUser(Users user){
   //get details from Users and populate to entities User and UserDetails.
   // Save User and UserDetails. Return Response
 }
 }

【讨论】:

  • 谢谢,但是我怎样才能分离数据以便相应地保存。我的目标是将数据发布到帖子正文中的一个 json 对象中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
相关资源
最近更新 更多