【发布时间】:2011-07-11 19:26:14
【问题描述】:
我是 Hibernate 的新手。我注意到在 Hibernate 中,将 java 类映射到数据库表通常涉及关系表,甚至有时关系表不是必需的(例如在一对多关系中或相反)。
例如:
我是一个 Company 类和一个 Flight 类,其中一个公司可以有多个航班(从 Company 到 Flight 的一对多关联)。
我有以下使用休眠注释的代码:
@Entity
@Table(name = "COMPANY")
public class Company {
@Id
private Long id;
@OneToMany
private Set<Flight> flights = new HashSet<Flight>();
......
getter and setter methods
......
}
@Entity
@Table(name="FLIGHT")
public class Flight{
@Id
private Long id;
@ManyToOne
@JoinColumn(name = "COMP_ID")
private Company ownerCompany;
......
getter and setter methods
......
}
类已成功映射到数据库。并且一共有三个表,分别是:
- 公司(ID 字段)
- FLIGHT(一个 ID 字段和一个 COMP_ID 字段)
- COMPANY_MANY_TO_ONE_FLIGHT(两个字段:MANY_TO_ONE_COMPANY_id 和 flight_id)
但是最后一张表COMPANY_MANY_TO_ONE_FLIGHT是hibernate添加的关系表,是多余的。
显然FLIGHT表中有外键COMP_ID,去掉冗余关系表是合理的。
我该如何避免这种情况?就像通过修改注解一样。
【问题讨论】:
标签: hibernate mapping one-to-many many-to-one