连接表与另一个连接表

时间:2021-02-01 13:49:05

标签: database-design

所以我有一个名为 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 创建另一个表并将其与订单连接。

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

3- 有什么更好的主意吗?

1 个答案:

答案 0 :(得分:1)

您关于数据库设计的问题与 spring-boot 和 hibernate 无关。 我建议您将订单表分解为两个表:order 和 order_detail。

像这样:

case 'email':
  var template = `
<div>
    Day(s) to Complete: 
    <select id="e_time" df-e_time>
      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
    </select>
</div>
`;
  editor.addNode('email', 1, 1, pos_x, pos_y, 'custom-node', {
    "e_time": ""
  }, template);
  break;
  
<script>
    window.onload = function() {testing()};
    function testing() {
        var elm = document.getElementById('e_time'),
            df = document.createDocumentFragment();
        for (var i = 1; i <= 42; i++) {
            var option = document.createElement('option');
            option.value = i;
            option.appendChild(document.createTextNode("option #" + i));
            df.appendChild(option);
        }
        elm.appendChild(df);
    }
</script>

和:

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

}