Re: JPA+hibernate merge vs find fetching lazy collection
On Tue, 29 Dec 2009, kamiseq wrote:
I have to entities GenObject and GenObjectCnf that are linked with one-
to-many type, where in GenObject
@OrderBy
@OneToMany(cascade = CascadeType.ALL, mappedBy = "objects", fetch =
FetchType.LAZY)
private List<GenObjectCfg> objectsCfgSet = new ArrayList<GenObjectCfg>
();
now I create GenObject and persist it. then I instantiate new
GenObjectCnf object assign GenObject with it and persist.
^^^^^^^^^^^^^^^^^^^^^^^^
What does this mean? It's not correct English, i'm afraid. Posting the
code that does this would be very helpful.
I assume that you mean that you assign the owning GenObject to the
GenObjectCnf's object field, like this:
GenObject someObject;
GenObjectCnf someCnf = new GenObjectCnf();
someCnf.object = someObject;
If my understanding is wrong, the rest of my advice will probably be
wrong.
the problem is now that my GenObject doesn't know about GenObjectCnf as
it was created before it and I didn't assigned GenObjectCnf back after I
created it. so I thought I can simply merge GenObject object to update
its state and data I need.
The solution is much simpler than this - you store the GenObjectCnf into
the GenObject's objectsCfgSet list:
someObject.objectsCfgSet.add(someCnf);
This is a very important point, which you may not have appreciated - JPA
does *not* manage bidirectional relationships at the object level, only at
the database level. So, if you create a bidirectional relationship, you
have to create both ends. See:
http://blog.xebia.com/2009/03/16/jpa-implementation-patterns-bidirectional-assocations/
It's possible i've misunderstood your problem completely - apologies if
so.
tom
--
FRUIT FUCKER has joined the party!