openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tedman Leung <ted...@sfu.ca>
Subject Re: detachment of fetch-groups doesnt work
Date Thu, 09 Apr 2009 15:05:39 GMT
I didn't open one because I don't know if it's specified in the specs or 
not. It's possible that that is the normal expected behaviour of 
lazily fetched detached collections.

> is this worth a JIRA ?
>
> ---
> regards
> Marc Logemann
> http://www.logemann.org
> http://www.logentis.de
>
>
>
>
> Am 08.04.2009 um 23:50 schrieb Tedman Leung:
>
>> just as additional information, this is also true about any lazy
>> PersistentCollection too. I found that if I accessed the collection  
>> while
>> it is in an attached state the values are available, but as soon as it
>> becomes detached the collection becomes null even if I had just  
>> accessed
>> it prior to detachment.
>>
>> I'm not entirely sure if this is a bug or if it's suppose to work this 
>> way
>> when detached.
>>
>> On Wed, Apr 08, 2009 at 05:18:48PM +0200, Marc Logemann wrote:
>>> Hi,
>>>
>>> with OpenJPA 1.2.0 i am having some problems detaching attributes  
>>> which
>>> are in a fetch-group. My persistence.xml is:
>>>
>>> <property name="openjpa.DetachState" value="fetch-
>>> groups(DetachedStateField=true)"/>
>>>
>>> My Domain class header:
>>>
>>> @FetchGroups({
>>>    @FetchGroup(name="posDetail", attributes={
>>>        @FetchAttribute(name="deliveryAddresses")
>>>    })
>>> })
>>> public class Order {
>>>
>>>    @OneToMany(mappedBy = "order", cascade = CascadeType.ALL, fetch =
>>> FetchType.LAZY)
>>>    List<DeliveryAddress> deliveryAddresses;
>>> ...
>>> }
>>>
>>> (in fact i also have the @LoadFetchGroup("posDetail")  to be  
>>> sure.....)
>>>
>>> Now when i am leaving my DAO layer which means that the persistence
>>> contexts ends, the delivery address is "null" even though its in the
>>> fetch group. I even queried for the fetch group in the DAO before
>>> leaving it via:
>>>
>>> OpenJPAQuery oQuery = OpenJPAPersistence.cast(em.createQuery("select 
>>> o
>>> from Order o where o.oid = ?1"));
>>>        oQuery.setParameter(1, oid);
>>>        //
>>> oQuery.getFetchPlan().setMaxFetchDepth(3).addFetchGroup("posDetail");
>>>        List list = oQuery.getResultList();
>>>        if(list != null && list.size() > 0)  {
>>>            return (Order)list.iterator().next();
>>>        }
>>>
>>> I know it must be a detach issue because with the following
>>> persistence.xml it works (but i definitely wont use this config in
>>> production)
>>>
>>> <property name="openjpa.DetachState" value="all"/>
>>>
>>> Am i missing something here? When i debug my DAO, the deliveryAddress
>>> attribute is populated but as soon as i leave my DAO, its lost.
>>>
>>> ---
>>> regards
>>> Marc Logemann
>>> http://www.logemann.org
>>> http://www.logentis.de
>>>
>>>
>>>
>>>
>>
>> -- 
>>                                                           Ted Leung
>>                                                            
>> tedman@sfu.ca
>>
>> I can speak Canadian, American, Australian, and little English.
>>
>

-- 
                                                           Ted Leung
                                                           tedman@sfu.ca

It's time for a new bike when the bulb in your shift light burns out.

Mime
View raw message