Two entities, Picture and Person, ManyToOne
Class Picture {
....
@ManyToOne
public Person getOwner() {... }
}
Picture picture = <a detached entity>
// the picture has a owner that is an instance of Person(not CGLIB enhanced).
//change picture name, then merge
Picture p = em.merge(picture);
The owner(Person) of p is changed to a CGLIB enhanced instance, and its all member variables become null. It has an Initializer that says initialized=true.
Why is that? I expected the object returned from em.merge() would keep all the data.
One thing I do not understand:
em.create(entity) will change entity directly. For merge, why it return a different instance? which instance should I work on after merge?
Thanks for help.
|