2015-10-11 92 views
0

首先的一部分:我知道有很多類似的問題在這裏,但我讀過他們大多和一切似乎ADRESS略有不同的問題,也沒有人有一個滿意的答案...所以,我還是希望有人知道如何處理我的問題......多對多的複合鍵

簡單地說,我有一個具有複合鍵的實體,我想加入其他實體的集合該複合鍵的一部分。不幸的是,hibernate迫使我將複合關鍵字的另一部分包含到連接中,導致無用的大連接表(對於250個不同的值集合,大於20m行...)。因此,我想從連接中排除密鑰的不必要部分。

實體草圖:

public class A { 
    @Id 
    int i_am_A; 

    @OneToMany 
    @JoinColumn(referencedColumnName = "i_am_A",name="A_i_am_A") 
    Set<AB> abs; 
} 

public class B { 
    @Id 
    int i_am_B; 

    @Id 
    int myLanguage; 

    ... 
} 

public class AB { 

    @ManyToOne 
    @Id 
    A myA; 

    @Id 
    int myB 

    @ManyToMany 
    @JoinColum(name="myB") 
    Collection<B> bs; 

    @Basic 
    String value 

} 

因此,這是基本上A具有B的關係,可以有一定的值,該值被存儲在AB。一個異常現象,即B存在於多種語言和AB應該指向他們。有沒有人知道如何使用Hibernate做到這一點(如果可能的話,不用重新構建Db ...我知道可能有更好的設計,但現在這個模式中有相當多的行...)?

+0

我認爲這個問題是在你的模型,它不應該是一個'<- AB -> B'-C',用'C'是多traslations 'B'? – SJuan76

+0

@ SJuan76我擔心這可能是唯一可行的解​​決方案...... – gapvision

回答

0

通過根據@ SJuan76數據庫的設計解決了這個評論