当前位置: 首页 > 知识库问答 >
问题:

在RESTAPI中将客户详细信息添加到用户

单展
2023-03-14

我正在使用Spring Boot hibernate制作一个书店rest api,我不知道该如何进行。因此,首先创建用户(使用此处未发布的DTO):

   @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;
  }
}

然后他可以登录并搜索他感兴趣的书籍。当他想订购时(使用POST和JSON包含他的书),他应该在我的客户实体中输入他的详细信息(使用DTO):

@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;
  }

这是一个好方法吗?我不知道如何才能将用户和客户联系起来-

编辑:澄清:

>

  • 用户注册并且只有电子邮件和密码-POST@ /users

    用户添加其客户详细信息(无地址)POST@/users/1/customer:找到当前登录的用户-

    用户添加其地址详细信息POST@users/1/customer/address:找到当前登录的用户-

    所有3个都使用不同的DTO-这是好方法吗?

  • 共有1个答案

    柳和怡
    2023-03-14

    我认为您可以重新建模您的实体:

    客户就是用户

    顾客买书

    创建具有默认属性的用户类。扩展用户类以创建客户类并在其中添加额外字段。创建一个Book类。将Book类的ArrayList作为books添加到Customer类。

    一旦用户登录,您就已经有了用户详细信息。为用户创建客户对象,并在用户作为客户填写时添加额外的详细信息,将选定的书籍添加到客户对象,并将客户对象保存到数据库。

     类似资料:
    • 我正在使用vue js开发laravel评论系统,在执行axios请求时遇到了一个问题。我需要接收一个数组作为对帖子所有评论的响应,但我想将用户数据添加到此数组中,以获取用户名和其他用户的详细信息。 当前: [{“id”:35,“user_id”:1,“post_id”:4,“parent_id”:0,“commenttext”:“test”,“created_at”:null,“updated_

    • 我在Amazon EC2上设置了一个2节点hazelcast集群。在其中一个节点上,我有一个连接到集群并运行原子长计数器增量的客户端程序 如何找出客户端连接并运行增量AndGet操作的Hazelcast服务器节点? 谢谢

    • 我对Java和Spring3(过去8年主要使用PHP)还很陌生。我已经使用spring security 3来处理所有默认的userDetails和userDetailsService,我知道我可以通过使用以下命令访问控制器中登录用户的用户名: 但有两个问题我想不通: > 我希望在用户登录时存储许多其他用户详细信息(如DOB、性别等),并在以后通过控制器进行访问。我需要做什么才能使创建的userD

    • 嗨,我尝试用InMemoryDao获取userDetailsService。但是我得不到,我试过@Autowired,@ Inject(userdailsservice,InMemoryDaoImpl,InMemoryManager...)但是我不能让它工作。 有公共类安全扩展WebSecurityC 只尝试了WebSecurityCon

    • 我想在android Studio与用户详细信息证书。并且用户可以下载该证书。(JAVA)