0
我是Hibernate的新手。我注意到在Hibernate中,将java类映射到数据库表通常涉及关系表,即使有时候关系表也不是必需的(就像在一对多关系中或相反)。避免Hibernate映射一对多(或一对多)关联到db表中的关系表
例如:
我是一个公司类和一个飞行类,其中一个公司可以有多个航班(一,从公司到飞行一对多关联)。
我使用Hibernate注释下面的代码:
@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
......
}
的类被成功地映射到数据库中。和有三个表,它们是:
- COMPANY(一个ID字段)
- FLIGHT(一个ID字段和一个COMP_ID字段)
- COMPANY_MANY_TO_ONE_FLIGHT(两个字段:MANY_TO_ONE_COMPANY_id和flights_id)
但是,最后一个表COMPANY_MANY_TO_ONE_FLIGHT是由hibernate添加的关系表,它是冗余的。
显然,在FLIGHT表中有一个外键COMP_ID,合理的删除冗余关系表。
我该如何避免这种情况?就像通过修改注释一样。
是的,它的作品! thannks – xiaohan2012