2010-07-09 280 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