2010-07-09 525 views
2

表佈局:使用hibernate註釋映射ManyToMany關係?

 
TABLE ORDER: 
id 
localizedInfoId 

Table OrderLocalizedInfo: 
id 
localizedInfoId 
name 

用下面的實體:

 


public class Order { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="id") 
    private Long id; 

    @ManyToMany(
     targetEntity=OrderLocalizedInfo.class, 
     cascade={CascadeType.PERSIST, CascadeType.MERGE}) 
    @JoinTable(
     name="OrderLocalizedInfo", 
     [email protected](name="localizedInfoId"), 
     [email protected](name="localizedInfoId")) 
    private List localizedInfos; 
} 

public class OrderLocalizedInfo { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="id") 
    private Long id; 

    @Column(name="localizedInfoId") 
    private Long localizedInfoId; 

    @Column(name="name") 
    private String name; 
} 
 

我要地圖上面的情況,使我有訂單對象上OrderLocalizedInfo對象的列表,使用「localizedInfoId」每個表中的字段。 當我這樣做時,我得到一個映射異常'爲集合Order.localizedInfos列重複列映射:localizedInfoId。

回答

6

我不太瞭解你的物理模型,但它顯然不代表多對多的關聯。一個多A和B之間的一對多關聯涉及連接包含列的源和目標表的主鍵表:

 
+-------+ +-------+ +-------+ 
| A | | A_B | | B | 
+-------+ +-------+ +-------+ 
| A_ID | | AID | | B_ID | 
| ... | | BID | | ... | 
+-------+ +-------+ +-------+ 

所以目前,沒有什麼地圖@ManyToMany。你需要修正你的物理模型或者澄清你想要達到的目標(可能這畢竟不是很多)。

+0

您是對的,它並不是很多。我需要做一個@OneToMany – jzilla 2010-07-12 15:29:06

+0

@Pascal我在連接表中還有一列。我可以如何映射到Java POJO? – vikiiii 2013-03-15 05:07:56