我使用EclipseLink作为JPA Provider。我希望Eclipse Link生成我的表,所以我在dropistence.xml文件中使用了drop-and-create-tables作为eclipse link ddl生成策略。
我的问题如下:
我想实现多对多关系。我有一个拍卖表和一个项目表。 拍卖可以有很多项目,一个项目可以在很多拍卖中。
当Eclipse Link生成表时,我看到它在数据库中创建了四个表。 1)拍卖2)Auction_item 3)项目和4)Item_auction。
Auction_item有两列1)Auction_id 2)item_id Item_acution有两列1)Item_id 2)auction_id
因此,所有Eclipse Link都自己创建了两个桥接表来映射“多对多”关系。
我们可以没有一个具有auction_id,item_id的桥接表来实现相同的目标吗? 如果我们不能,原因是什么?
由于
答案 0 :(得分:2)
您可能有两个@ManyToMany映射但在一侧缺少mappedby指示。这用于表示一方使用另一方包含的映射信息,并且该方在该数据库级别控制关系。
即:
Auction class{
@ManyToMany
List items;
}
Items class {
@ManyToMany(mappedby="items")
List auctions;
}