我是Hibernate的新手。我注意到在Hibernate中,将java类映射到数据库表通常涉及关系表,有时甚至不需要关系表(就像在一对多关系中或相反)。
例如:
我是公司级和飞行班,公司可以有多个航班(从公司到航班的一对多协会)。
我有以下使用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_MANY_TO_ONE_FLIGHT是由hibernate添加的关系表,这是多余的。
显然,FLIGHT表中有一个外键COMP_ID,合理删除冗余关系表。
我怎样才能避免这种情况?就像通过修改注释一样。
答案 0 :(得分:2)
尝试使用@OneToMany注释中的mappedBy属性:
@OneToMany(mappedBy="ownerCompany")
private Set<Flight> flights = new HashSet<Flight>();
你可以在这里找到与hibernate注释相关的常见关联: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#entity-mapping-association