【发布时间】:2021-11-17 11:38:56
【问题描述】:
我的 Spring Boot 应用程序中有 3 个实体。 User,Item 和 Orders
我希望一个Orders 对象有多个Items,所以我在Orders 类中使用了@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 个表
Item , Orders 和 Orders_Item 来自上面的代码。
Orders 表有两列 order_id 和 order_user_id
还有
Orders_Item 表有两列orders_order_id 和items_item_id
hibernate 正在使 items_item_id 成为唯一键,我不想要这个
Hibernate: alter table orders_items add constraint UK_9uu7j0okufkkanam94v8gb2qa unique (items_item_id)
所以我的问题是我不能插入一个具有多个 ID 的项目
如何解决这个问题?
【问题讨论】:
-
你不能多次插入一个项目是什么意思?您还需要双向或单向关系吗?
-
嗨@akortex。我想要 单向 映射。通过多次插入
item,我的意思是我已经将数据库中的项目保存在item表中。当我将item保存到orders表时,item_id将被保存到orders_items表中。所以items_item_id上的unique key constraint阻止了多次保存item_id。
标签: java mysql spring-boot hibernate unique-constraint