[mysql]多对多在标注中的允许出现重复条目

标签: MySQL Java
发布时间: 2017/1/9 22:11:56
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有个表称为包含很多项目,所以我需要一张地图,将项目链接到该订单订单

那一刻,我有这个︰

@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@Fetch(value = FetchMode.SUBSELECT)
@JoinTable(name = "order_map_item", joinColumns = @JoinColumn(name = "orderId"), inverseJoinColumns = @JoinColumn(name = "itemId"))
List<Item> items = new ArrayList<Item>();

但它不允许重复,如果我想要添加的项目两次。

当我用手编辑 MySql 数据库,删除索引时,我可以添加重复项。但他们正在更多,如果我调用em.refresh(order);

请告诉我,什么是最佳实践对我的情况?找不到任何东西...

解决方法 1:

看起来像你的问题是联接表显然具有复合主键与每一列作为两个表的狗仔队关键。 然而你的用例异动可能有重复。在这种情况下,另一种策略可能是映射实体

@Entity
public class OrderItemMapping  {

    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long                id;

    @ManyToOne
    @JoinColumn(name="order")
    private Order               order;

    @ManyToOne
    @JoinColumn(name="item")
    private Item item;
官方微信
官方QQ群
31647020