0

Is this a bug or am I doing something wrong?

Illustration of issue: Team 1..1 <------> 0..* Member

I don't want a pointer from Member to Team, only a Set of Members in Team. The code looks something like this.

Team t = new Team("t");
Member m1 = new Member("m1");
t.members.add(m1);
...
session.save(t);

If I define the Set as

@OneToMany(cascade = CascadeType.ALL)
public Set<Member> members;

...it works as expected, but...

@OneToMany(cascade = {
    CascadeType.PERSIST,
    CascadeType.DETACH,
    CascadeType.REFRESH,
    CascadeType.REMOVE,
    CascadeType.MERGE })
public Set<Member> members;

...it fails with a

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: tmp.Member

Of course there are easy workarounds but I'd like to understand why this is happening.

1 Answers1

0

After looking around a bit more I found this answer: Hibernate : CascadeType.PERSIST does not work but CascadeType.ALL to save object which fixes the problem

Community
  • 1
  • 1