一对多映射创建 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 个表的主要内容,如果未能解决你的问题,请参考以下文章

hibernate 一对多双向的问题~~~

具有复合键的一对多注释映射

慕课网Hibernate初探之一对多映射实验及总结

MyBatis之基于XML的表之间映射

使用 MS Access 2010,编辑一个表单,3 个表,一个表是“一对多”,并且希望在一行中进行查询

mybatis xml数据层框架应用--Mybatis关系映射之一对多关系映射