Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Not retreiving OneToMany collections with lazy and eager option

Hi Christopher,

Sorry to bother you again. I am still not clear, may be an example will help
me to understand or if you can mention the changes do I need to make this
bidirectional mapping to work.


Thanks,
Kiran


christopher delahunt wrote:
> 
> Sorry I was not clearer. 
> 
> No, there is nothing wrong with your mappings.  This is a reoccurring 
> problem with bidirectional relationships, as JPA does not maintain 
> relationships for you - the application must maintain both sides 
> itself.  When the application sets applicationRejectMap.application = 
> app, it must also add the applicationRejectMap to the app's 
> appRejectMaps collection, otherwise each and every time you access the 
> appRejectMaps it will never see this change - until you the app instance 
> is refreshed. 
> 
> Best Regards,
> Chris
> 
> On 22/11/2010 9:16 AM, Kiran Kumar Gubbi wrote:
>> Hi Christopher,
>>
>> Here is my code.
>>
>> The Application is parent entity which has collection OneToMany of
>> ApplicationRejectMap.  The entity detail given below.
>>
>> @Entity
>> @Table( name = "APPLICATION_TBL" )
>> public class Application {
>>
>> @Column( name = "APPLICATION_ID", nullable = false, unique = true )
>> private Integer id;
>>
>> @OneToMany( mappedBy = "application", fetch = FetchType.LAZY )
>> private Set< ApplicationRejectMap >  appRejectMaps;
>> }
>>
>> The child class ApplicationRejectMap details which as ManyToOne relation
>> with Application as mentioned beow.
>>
>> @Entity
>> @Table( name = "APPLICATION_REJECT_MAP_TBL" )
>> public class ApplicationRejectMap {
>>
>> @Column( name = "REJECT_MAP_ID" )
>> private Integer id;
>>
>> @ManyToOne
>> @JoinColumn( name = "REJECT_APPLICATION" )
>> private Application application;
>> }
>>
>> Do you think is there any issue on this? 
>>
>>
>> Thanks,
>> Kiran
>>
>>
>> christopher delahunt wrote:
>>   
>>> Hello Kiran,
>>>
>>>  From the sounds of it, the OneToMany is mapped by a OneToOne back 
>>> pointer, and are maintaining relationship changes through the OneToOne 
>>> but not the OneToMany.   If you set one side of a bi directional 
>>> relationship, the application must also maintain the other side as well 
>>> or the cache becomes out of synch with what is in the database until a 
>>> refresh occurs.  Invalidating the objects is essentially forcing a 
>>> refresh, which causes the OneToMany to be queried from the database. 
>>>
>>> When you add/remove from a relationship, the application will also need 
>>> to add/remove from the OneToMany collection as well.
>>>
>>> Best Regards,
>>> Chris
>>>
>>> On 22/11/2010 6:01 AM, Kiran Kumar Gubbi wrote:
>>>     
>>>> Hi all,
>>>>
>>>> I am currently trying to improve performance of our application . One
>>>> of
>>>> the
>>>> thing I wanted to use is lazy loading of oneToMany collections. But it
>>>> looks
>>>> like the data is not retrieved eventhough it is present in the
>>>> database.
>>>> The
>>>> scenario is we upload the application form through web service, it
>>>> generates
>>>> the form  data and if the form is not valid it generates rejection list
>>>> in
>>>> the database. On looking for this same form on our web application the
>>>> rejection list is not retrieved from the database. I have used fetch
>>>> type
>>>> is
>>>> lazy for this collection. One thing we have noticed that after clearing
>>>> cache using the following code from the screen the rejection list start
>>>> appearing on the screen.
>>>> ( ( JpaEntityManager ) getEntityManager().getDelegate()
>>>> ).getServerSession(). getIdentityMapAccessor().invalidateAll(); 
>>>>
>>>> Is there something I am missing here ?
>>>>
>>>> My colleague observed even Eager fetching is not working .
>>>>
>>>> Thanks,
>>>>
>>>> Kiran
>>>>
>>>>
>>>>   
>>>>       
>>> _______________________________________________
>>> eclipselink-users mailing list
>>> eclipselink-users@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>
>>>
>>>     
>>
>>   
> 
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> 
> 

-- 
View this message in context: http://old.nabble.com/Not-retreiving-OneToMany-collections-with-lazy-and-eager-option-tp30277461p30279202.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top