Hibernate 在@OneToMany 映射中自己添加不需要的唯一键

Hibernate adds unwanted unique key itself In @OneToMany mapping

我的 Spring 启动应用程序中有 3 个实体。 UserItemOrders 我想要一个 Orders 对象有多个 Items 所以,我在 Orders class.

中使用了 @OneToMany 映射

这是我的代码:

这是我的 Item.java 文件

@Entity
public class Item implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="item_id")
private int itemId;
@Column
private String name;
@Column
private int price;
@Column
private String image;
@Column(name = "item_user_id")
private int userId;

//getters ssetters

}

这是我的 Orders.java 文件

@Entity
public class Orders implements Serializable {

private static final long serialVersionUID = 3L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "order_id")
private int orderId;

@Column(name = "order_user_id")
private int userId;

@Column
@OneToMany
private List<Item> items = new ArrayList<>();

//getters setters

}

Hibernate 如我所料生成 3 tables Item , OrdersOrders_Item 来自上面的代码。

Orders table 有两列 order_idorder_user_id

还有 Orders_Item table 有两列 orders_order_iditems_item_id

hibernate 使 items_item_id 成为唯一键,我不想要这个

Hibernate: alter table orders_items add constraint UK_9uu7j0okufkkanam94v8gb2qa unique (items_item_id)

所以我的问题是我无法多次插入具有一个 ID 的项目

如何解决这个问题?

如果你想删除 items_item_id 上的唯一约束,那么你有一个多对多关系,你想将一个项目关联到多个订单。将您的 @OneToMany 注释更改为 @ManyToMany 注释。