[ https://issues.apache.org/jira/browse/OPENJPA-2522?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Atul Kshirsagar updated OPENJPA-2522: ------------------------------------- Attachment: TestL2CacheLazyLoading.java Person.java persistence.xml Address.java Attaching the test for this defect > With L2 Cache turned ON newly persisted entity on inverse side of relation > doesn't have FK populated on 'find'/'query' > ----------------------------------------------------------------------------------------------------------------------- > > Key: OPENJPA-2522 > URL: https://issues.apache.org/jira/browse/OPENJPA-2522 > Project: OpenJPA > Issue Type: Bug > Components: datacache, jpa > Affects Versions: 2.2.2, 2.3.0 > Environment: apache karaf 2.3.0, openjpa 2.2.2 > Reporter: Atul Kshirsagar > Attachments: Address.java, Person.java, TestL2CacheLazyLoading.java, > persistence.xml > > > With l2 cache turned on (by setting "openjpa.DataCache" property to "true" in > persistence.xml) we observed following behavior: > Lets say we have model Person <-> Address(LAZY, owner). We create a new > instance of Person and Address. Since Person is non-owing side of relation, > we set Person instance in Address but don't set Address instance in Person. > We then persist both Person and Address instance. Later when we query Person > entity by using EntityManager.find method the returned instance of Person > doesn't have Address field set. This field doesn't get set even if we query > Address entity. > It appears that Person entity that was created when we persisted gets cached > and it doesn't get refreshed when we query for that instance. > I have looked at defect https://issues.apache.org/jira/browse/OPENJPA-2285 > and applied that fix to open jpa 2.2.2 but I still see the same behavior. I > did some debugging and found that PCDataImpl.isLoaded method always returns > true for the 'address' field and hence it looks up in its internal "_data" > object array for value, which has null for 'address' field. In effect the > check of the loadedFieldsAfter and loadedFieldsBefore introduced in > OPENJPA-2285 doesn't trigger and cache is never updated. > I have verified that this is indeed a cache problem by evicting the "Person" > class from datacache (using > EntityManagerFactory.getCache().evict(Person.class) method) and making sure > that further queries for that Person instance returns address when we try to > access that field. -- This message was sent by Atlassian JIRA (v6.2#6252)