2011-07-11 34 views
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 
    ...... 

} 

的类被成功地映射到数据库中。和有三个表,它们是:

  1. COMPANY(一个ID字段)
  2. FLIGHT(一个ID字段和一个COMP_ID字段)
  3. COMPANY_MANY_TO_ONE_FLIGHT(两个字段:MANY_TO_ONE_COMPANY_id和flights_id)

但是,最后一个表COMPANY_MANY_TO_ONE_FLIGHT是由hibernate添加的关系表,它是冗余的。

显然,在FLIGHT表中有一个外键COMP_ID,合理的删除冗余关系表。

我该如何避免这种情况?就像通过修改注释一样。

回答

相关问题