2012-01-18 108 views
1

讓我定義以下實體,例如:JPA中的兩個實體可以有多個關係嗎?

@Entity 
public class Box{ 

    @ManyToOne 
    Apple apple; 

    @ManyToOne 
    Orange orange; 

} 

@Entity 
public class Apple { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Orange> OrangeBoxMates; 
} 


@Entity 
public class Orange { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Apple> appleBoxMates; 

} 

忽視的事實是許多批註已被省略。我只是用這個代碼作爲例子。

現在我想創建一個額外的蘋果和桔子之間的單向關係。

@Entity 
public class Apple { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Orange> OrangeBoxMates; 

    @ManyToMany 
    List<Orange> OrangeFriends; 
} 


@Entity 
public class Orange { 

    @OneToMany 
    List<Box> boxes; 

    @ManyToMany 
    List<Apple> appleBoxMates; 


} 

有沒有什麼理由我不能做這樣的事情?

+0

不,沒有理由。只要使用適當的註釋和屬性,一切都會好起來的。 – 2012-01-18 11:00:43

+0

只是爲了確認,我不能使用連接列的默認名稱,因爲默認名稱是類名,並且會有衝突。所以,如果我使連接列名稱顯式(和不同的lol),一切都會好嗎? – b3bop 2012-01-18 16:39:36

+0

是的,一切都會好起來的。 – 2012-01-18 16:40:51

回答

0

我懷疑Hibernate可以區分Apple中的兩個@ManyToMany關聯,因爲您使用的是默認連接列,並且這兩個關聯對於兩個關聯都是相同的。我想你可以將你的Apple關聯定製爲Orange,這樣它們就可以映射到數據庫中的不同列(不同的FK)。

相關問題