[ 
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)

Reply via email to