Hibernate 在@OneToMany 映射中自己添加不需要的唯一键
Hibernate adds unwanted unique key itself In @OneToMany mapping
我的 Spring 启动应用程序中有 3 个实体。 User
、Item
和 Orders
我想要一个 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
, Orders
和 Orders_Item
来自上面的代码。
Orders
table 有两列 order_id
和 order_user_id
还有
Orders_Item
table 有两列 orders_order_id
和 items_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
注释。
我的 Spring 启动应用程序中有 3 个实体。 User
、Item
和 Orders
我想要一个 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
, Orders
和 Orders_Item
来自上面的代码。
Orders
table 有两列 order_id
和 order_user_id
还有
Orders_Item
table 有两列 orders_order_id
和 items_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
注释。