openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeremy Bauer (JIRA)" <>
Subject [jira] Commented: (OPENJPA-1913) If fetch-groups is used, detaching an entity will lead to all lazy loaded members get reset to null
Date Thu, 06 Jan 2011 16:30:46 GMT


Jeremy Bauer commented on OPENJPA-1913:

I did some debugging and a little more experimentation and I believe OpenJPA is working as
designed.  Using a DetachState of fgs results in a detached entity with only those fields
in the specified fetch group.  By default, OpenJPA uses the "default" fetch group and that
fetch group contains primary keys, version fields, and eager fetch fields.  If you apply a
non-default fetch group (specified dynamically or via the openjpa.FetchGroups property) fields
defined as EAGER - but not included in the specified fetch group - will not be included in
detached entity (they'll be null).  It is the correlation of EAGER/LAZY to the default fetch
group that muddies the waters a bit.  Also, one tends to think of fetch groups as a load operation,
but in this case it applies to detachment as well.

While it isn't terribly intuitive, using fgs may be useful if you are detaching and only want
to provide a client an entity populated with only those fields defined in the fetch group.
 It sounds like what you may be looking for is a hybrid "loaded + fgs" option that preserves
loaded fields and also loads any unloaded fields that are defined in the fetch group upon

> If fetch-groups is used, detaching an entity will lead to all lazy loaded members get
reset to null
> ---------------------------------------------------------------------------------------------------
>                 Key: OPENJPA-1913
>                 URL:
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 2.1.0
>            Reporter: Mark Struberg
>            Assignee: Jeremy Bauer
>             Fix For: 2.2.0
>         Attachments: OPENJPA-1913-enhancer-fix.patch, OPENJPA-1913-test.patch
> If I use openjpa.DetachState=fetch-groups and detach an entity with a lazy loaded list,
this list gets reset to null.
> An example:
> class @Entity Person {
>    private String name;
>     @OneToMany(mappedBy = "group", cascade = {CascadeType.ALL})
>     private List<Subscription> subscriptions = new ArrayList<Subscription>();
>  ...}
> I load the Person and access the subscriptions inside a transaction. I get a person instance
with e.g. 3 subscriptions. 
> If I now close the EntityManager and my person gets detached, the subscriptions list
is suddenly null!

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message