我正在开发一个Web应用程序,客户调用它给员工,他将客户的订单放到系统中。
根据我的ER diagram
,OrderDetail
类包含一个orderId
和productId
的复合主键。它还包含orderedQuentity
列。我想要的是,当客户下订单时,它必须有他/她订购的产品以及他/她订购的每种产品的数量以及下订单的人(员工).....
但我觉得在我的方式中,orderDetail
类只能包含产品列表,而不是每个产品的数量。
我该怎么做我想做的事?
这是我尝试实现的实体类。
客户类别 :
@Entity
public class Customer {
@Id
@GeneratedValue
private Integer id;
private String firstName;
private String lastName;
private String companyName;
private Integer teleponeNumber;
@OneToMany(mappedBy="customer")
private List<OrderDetail> orders;
}
产品类别 :
@Entity
public class Product {
@Id
@GeneratedValue
private Integer id;
private String name;
private Integer availableQuantity;
private String unitType;
private Integer unitPrice;
private String description;
@ManyToMany(mappedBy="products")
private List<OrderDetail> details;
}
订单类别 :
@Entity
public class OrderDetail {
@Id
@GeneratedValue
private Integer orderId;
private Integer orderedQuentity;
private String customerAddress;
private String shipingAddress;
private String orderStatus;
@ManyToOne
@JoinColumn(name="Employee_Id")
private Employee employee;
@ManyToOne
@JoinColumn(name="customer_id")
private Customer customer;
@ManyToMany
@JoinTable
private List<Product> products;
}
员工类别 :
@Entity
public class Employee {
@Id
@GeneratedValue
private Integer id;
private String firstName;
private String lastName;
private String designation;
private String email;
private String password;
@OneToMany(mappedBy="employee")
private List<OrderDetail> orders;
}
从客户到订单详细信息,您有一个一对一的关系,我建议您创建一个 JoinTable
因此,客户实体将如下所示:
@Entity
public class Customer {
@Id
@GeneratedValue
private Integer id;
private String firstName;
private String lastName;
private String companyName;
private Integer teleponeNumber;
@OneToMany(mappedBy="customer")
@JoinTable(name = “customer_order_details”, joinColumns= { @JoinColumn(name = “customer_id”, referencedColumnName=”id”) }, inverseJoinColumns = { @JoinColumn(name = “order_id”, referencedColumnName = “id”) })
private List<OrderDetail> orders;
}
员工实体中的相同情况:
@Entity
public class Employee {
@Id
@GeneratedValue
private Integer id;
private String firstName;
private String lastName;
private String designation;
private String email;
private String password;
@OneToMany(mappedBy="employee")
@JoinTable(name = “employee_order_details”, joinColumns= { @JoinColumn(name = “employee_id”, referencedColumnName=”id”) }, inverseJoinColumns = { @JoinColumn(name = “order_id”, referencedColumnName = “id”) })
private List<OrderDetail> orders;
}
和产品实体:
@Entity
public class Product {
@Id
@GeneratedValue
private Integer id;
private String name;
private Integer availableQuantity;
private String unitType;
private Integer unitPrice;
private String description;
@ManyToMany(mappedBy="products")
@JoinTable(name = “product_order_details”, joinColumns= { @JoinColumn(name = “product_id”, referencedColumnName=”id”) }, inverseJoinColumns = { @JoinColumn(name = “order_id”, referencedColumnName = “id") })
private List<OrderDetail> details;