[ https://issues.apache.org/jira/browse/OPENJPA-2586?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Heath Thomann closed OPENJPA-2586. ---------------------------------- Resolution: Fixed Fix Version/s: 2.4.1 2.2.3 2.2.1.1 2.1.2 2.0.3 > Incorrect relationship data returned when QueryCache and FetchPlans are used. > ----------------------------------------------------------------------------- > > Key: OPENJPA-2586 > URL: https://issues.apache.org/jira/browse/OPENJPA-2586 > Project: OpenJPA > Issue Type: Bug > Components: datacache, jdbc > Affects Versions: 2.1.2, 2.2.2, 2.2.1.1, 2.4.1 > Reporter: Heath Thomann > Assignee: Heath Thomann > Priority: Critical > Fix For: 2.0.3, 2.1.2, 2.2.1.1, 2.2.3, 2.4.1 > > Attachments: OPENJPA-2586-2.2.x.patch > > > I have found a scenario that the wrong data is returned when the DataCache, > QueryCache, and FetchPlans are used. To explain, take these very simple > entities and relationship: > @Entity > public class Entity1 { > @Id > private int id; > @OneToOne(fetch = FetchType.LAZY) > private Entity2 ent2; > ........ > @Entity > public class Entity2 { > @Id > private Long id; > ...... > Given these two entities, take this scenario: > Query q = em.createQuery("Select e1 from Entity1 e1"); > FetchPlan fetchPlan = q.unwrap(OpenJPAQuery.class).getFetchPlan(); > fetchPlan.addField(Entity1.class, "ent2"); > List<Entity1> results = (List<Entity1>) q.getResultList(); > em.clear(); > assertNotNull("No results returned!", results); > for (Entity1 e1 : results) { > assertNotNull("An 'Entity2' should have been returned!", e1.getEnt2()); > } > With this code, assume the DataCache and QueryCache are both enabled, and > assume there is an Entity1 with an Entity2 in the database. When we execute > this code all works fine. However, if we execute the code back to back using > the same EntityManagerFactory, an Entity1 will be returned but its Entity2 > will be null! If on the other hand, we execute the code 3 times in a row, > where there is a time lag between the 2nd and 3rd execution greater than the > DataCache timeout, the correct data will be returned during the 3rd > execution. This shows that there is a problem when the DataCache, > QueryCache, and a FetchPlan are used. For more details please see the patch > I've attached which contains a test to recreate this issue as well as a > proposed fix. > Thanks, > Heath Thomann -- This message was sent by Atlassian JIRA (v6.3.4#6332)