一对多映射创建 3 个表
Posted
技术标签:
【中文标题】一对多映射创建 3 个表【英文标题】:One To Many Mapping creates 3 tables 【发布时间】:2019-01-12 23:35:37 【问题描述】:您好,我正在使用 h2 数据库和休眠的一对多映射。我的 Spring Boot 应用程序使用实体类创建表。我发现有 3 个表正在创建。因此,只有在多对多的情况下,我们才有第三张表来维护两者之间的关系。就我而言,即使是一对多的情况,我也可以看到正在创建 3 个表。有人可以阐明这一点。
@ApiModel(description = "Class representing a Order placed by custormer")
@Entity
@Table(name = "order_taken")
public class Order
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "order_id")
private int orderId;
@Column(name = "quantity")
private int quantity;
@OneToMany(fetch = FetchType.LAZY ,cascade = CascadeType.ALL)
private Set<Item> items;
@ApiModel(description = "Class representing all coffee varieties in our
Restaurant")
@Entity
@Table(name="items")
public class Item
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="item_id")
private int itemId;
@Column(name="item_name")
private String itemName;
@Column(name="price")
private double price;
对于上述实体,有 3 个表项,orders_taken 和 orders_taken_item。
【问题讨论】:
【参考方案1】:如果您不想创建关系表,则需要指定@JoinColum
。
将此添加到Order
表中:
@OneToMany(fetch = FetchType.LAZY ,cascade = CascadeType.ALL)
@JoinColumn(name = "order_id")
private Set<Item> items;
【讨论】:
以上是关于一对多映射创建 3 个表的主要内容,如果未能解决你的问题,请参考以下文章