I have 3 entities in my Spring boot application. User
,Item
and Orders
I want one Orders
object to have multiple Items
so, I used @OneToMany
mapping in Orders
class.
This is my code:
This is my Item.java
file
@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 }
This is my Orders.java
file
@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 is generating 3 tables as I expected
Item
, Orders
and Orders_Item
from above code.
Orders
table has two columns order_id
and order_user_id
Also
Orders_Item
table has two columns orders_order_id
and items_item_id
hibernate is making items_item_id
a unique key, I don’t want this
Hibernate: alter table orders_items add constraint UK_9uu7j0okufkkanam94v8gb2qa unique (items_item_id)
SO MY ISSUE IS I CAN’T INSERT AN ITEM HAVING ONE ID MORE THAN ONCE
How can this issue be ressolved?
Advertisement
Answer
If you want to remove the unique constraint on items_item_id
then you have a ManyToMany relationship, you want to associate an item to more than one order. Change your @OneToMany
annotation to a @ManyToMany
annotation.