Java 在RESTAPI中将客户详细信息添加到用户
我正在使用SpringBoot+hibernate制作一个书店RESTAPI,我不确定该如何继续。因此,首先创建用户(使用DTO不在此处发布): 然后他可以登录并搜索他感兴趣的书籍。当他想要订购书籍时(使用POST和包含书籍的JSON),他应该在我的客户实体中输入他的详细信息(使用DTO): 这是一个好方法吗?我不知道我如何才能链接用户与客户->客户有所有的细节,使一个订单,而用户是jsut注册的家伙,它的工作原理就像在5月网上商店,但我;我不确定我是否正确连接了它们,我的思维过程是否正常。有人能详细解释一下吗 编辑: 澄清:Java 在RESTAPI中将客户详细信息添加到用户,java,spring,hibernate,rest,Java,Spring,Hibernate,Rest,我正在使用SpringBoot+hibernate制作一个书店RESTAPI,我不确定该如何继续。因此,首先创建用户(使用DTO不在此处发布): 然后他可以登录并搜索他感兴趣的书籍。当他想要订购书籍时(使用POST和包含书籍的JSON),他应该在我的客户实体中输入他的详细信息(使用DTO): 这是一个好方法吗?我不知道我如何才能链接用户与客户->客户有所有的细节,使一个订单,而用户是jsut注册的家伙,它的工作原理就像在5月网上商店,但我;我不确定我是否正确连接了它们,我的思维过程是否正常。有人
所有3个都使用不同的DTO-这是一个好方法吗?我认为您可以重新建模您的实体: 客户就是用户 顾客买书 创建具有默认属性的用户类。 扩展用户类以创建客户类并在其中添加额外字段。 创建一个Book类。 将Book类的ArrayList作为books添加到Customer类 一旦用户登录,您就已经有了用户详细信息。为用户创建客户对象,并在用户作为客户填写时添加额外的详细信息,将所选书籍添加到客户对象,并将客户对象保存到数据库
@Entity
@Table(name = "app_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id", nullable = false, updatable = false, unique = true)
private Long id;
@Column(name = "email", nullable = false, unique = true)
private String email;
@Column(name = "password_hash", nullable = false)
private String passwordHash;
@OneToOne
@JoinColumn(name = "customer_id")
private Customer customer;
@Column(name = "role", nullable = false)
@Enumerated(EnumType.STRING)
private Role role;
// jpa requirement
public User() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPasswordHash() {
return passwordHash;
}
public void setPasswordHash(String passwordHash) {
this.passwordHash = passwordHash;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
}
@Entity
@Table(name = "customer")
public class Customer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "customer_id", nullable = false, updatable = false, unique = true)
private Long id;
@Column(name = "first_name", nullable = false)
private String firstName;
@Column(name = "last_name", nullable = false)
private String lastName;
@Column(name = "phone_number", nullable = false)
private String phoneNumber;
@ManyToOne
@JoinColumn(name = "address_id")
private Address address;
@OneToOne
@JoinColumn(name = "user_id")
private User user;
// jpa requirement
public Customer() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}