adept
adept

Reputation: 35

Hibernate JPA persist saved child entity with null parent id

I have two entities: parent :

public class UserGroup{
   @OneToMany(fetch = FetchType.EAGER, mappedBy = "userGroup", cascade = CascadeType.ALL)
    private List<User> users;
}

and child:

public class User{
    @ManyToOne(fetch = FetchType.EAGER)
    @Fetch(FetchMode.SELECT)
    @JoinColumn(name = "user_group_id")  
    private UserGroup userGroup;
}

when i am trying to save UserGroup with one User in list of users, with this method:

  @Transactional
public E save(E e) {
    em.persist(e);
    em.flush();
    em.refresh(e);
    return e;
}

my parent and child is getting saved, but user_group_id in child object is null. Is there any solution?

Upvotes: 2

Views: 7374

Answers (3)

Maz
Maz

Reputation: 673

In your parent setter method of child, do this.

public void setChildren(Collection<Child> children) {
    this.children = children;
    for(Child child: this.children) {
      child.setParent(this)
    }
}

This should solve.

Upvotes: 2

uaiHebert
uaiHebert

Reputation: 1912

You have a bidirectional relationship. The correct way of saving it is putting both references in the entities.

You should do:

userGroup.getUsers().add(user);
user.setUserGroup(userGroup);
entityManager.persist(userGroup);

Upvotes: 3

Amogh
Amogh

Reputation: 4573

By considering you are giving UserGroup object along with list of User to save method: so your code should be:

em.save(userGroup);
for(User user : UserGroup.getUsers()) 
{
user.setuser_group_id(userGroup.getUserGroupId());
em.save(user);
}

Upvotes: 3

Related Questions