2017-03-01 171 views
0

我正在使用Spring Boot + hibernate制作书店休息API,我不知道该如何继续。所以首先用户的创建(使用DTO没有张贴在这里):添加客户详细信息给用户休息api

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

这是一个好办法?我不知道如何才能将用户与客户联系起来 - >当用户是注册用户时,顾客拥有所有的细节以作出订单,它可以在网上商店中使用,但我不知道我是否正确链接了他们我的思维过程是好的。有人详细说明了这一点?

编辑: 澄清:

  1. 用户注册,并具有唯一的电子邮件和密码 - POST @ /用户

  2. 用户增加了客户的详细信息(无地址)POST @ /用户/ 1/customer:找到当前登录的用户 - >添加客户在用户表中设置customer_id(OneToOne连接)

  3. 用户添加他的地址详细信息POST @ users/1/customer/address:当前登录我们呃发现 - >客户通过CUSTOMER_ID发现,然后添加地址,并通过使用不同的DTO ADDRESS_ID

所有3个连接的客户 - 这是好办法?

回答

0

我想你可以重新模型的实体:

客户是用户

顾客买书

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

用户登录后,您已拥有用户详细信息。为用户创建一个客户对象,并在用户填充为客户时添加额外的详细信息,将所选图书添加到客户对象并将客户对象保存到数据库。

相关问题