Skip to content
Advertisement

Hibernate adds unwanted unique key itself In @OneToMany mapping

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.

User contributions licensed under: CC BY-SA
7 People found this is helpful
Advertisement