连接表与另一个已连接表



所以我有一个名为order的实体,其中包含一组材料。这是另一个实体,就像下面的代码一样。

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "order_material", joinColumns = @JoinColumn(name = "order_id"), inverseJoinColumns = @JoinColumn(name = "material_id"))
private Set<Material> Materials;

我想向订单实体添加另一个数量字段,但它应该是每个材料。我们有每个订单每种材料的数量。我有点困惑该怎么做。在数据库方面。

我想到了以下几点:

1-为order_material_quantity创建另一个表,并将其与order连接。

2-我想到了这一点,但我不确定是否可能:是否有可能与我们有order_material的连接表连接?

3-有更好的主意吗?

关于数据库设计的问题,而不是关于spring-boot和hibernate。我建议您将订单表分成两个表:order和order_detail。

:

@Table("order")
public class Order {
@Id
@Column("order_id")
private Long orderId;
@Column("creation_date")
private Date creationDate;
@Column("user_id")
private Long userId;
@Column("customer_id")
private Long customerId;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "order_detail", joinColumns = @JoinColumn(name = "order_id"), inverseJoinColumns = @JoinColumn(name = "order_detail_id"))
private Set<OrderDetail> orderDetails;
}

:

@Table("order_detail")
public class OrderDetail {
@Id
@Column("order_detail_id")
private Long id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "order_id", nullable = false,updatable = false,insertable = false)
private Order order;

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "material_id", nullable = false,updatable = false,insertable = false)
private Material material;
@Column("quantity")
private Long quantity;
}

最新更新