2011-07-11 61 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,合理的刪除冗餘關係表。

我該如何避免這種情況?就像通過修改註釋一樣。

回答

相關問題