2

I have an entity "user" which is OneToMany mapped to another entity "item". List of Items are successfully added until the items are not duplicate. How can add duplicate items to the user.

In User entity

@OneToMany(mappedBy="user") 
private List<Item> item;

//getters and setters

In Item Entity

@ManyToOne(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(
        name="UserItem",
        joinColumns= @JoinColumn(name="ITEM_ID"),
        inverseJoinColumns = @JoinColumn(name="USER_ID")
)
private User user;

//getters and setters

My function in service class to add Item to User

public void addItemToUser(Integer userId,Integer itemId){
    Session session = sessionFactory.getCurrentSession();
    Item item2 = (Item)session.get(Item.class,itemId);
    // session.save(item2);
    User user2 = (User)session.get(User.class,userId);
    user2.getItem().add(item2);

    session.save(user2);
}

How can i add duplicate items to user. I am newbie in spring and hibernate

bablu
  • 601
  • 1
  • 9
  • 21
  • 1
    As you have given mappedBy on List saying that it is inverse side of relation. So in order to have two way unidirectional relation remove that mappedBy attribute and put cascade="CascadeType.ALL". Else save each time item and user will be updated automatically as Item class is owning side of relation. – Shoaib Chikate Nov 19 '14 at 12:52

1 Answers1

0

Check if you really need to use CascadeType.ALL instead of Cascade.SaveUpdate.