From dev-return-10289-apmail-openjpa-dev-archive=openjpa.apache.org@openjpa.apache.org Tue Feb 03 22:00:23 2009 Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 69245 invoked from network); 3 Feb 2009 22:00:23 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 3 Feb 2009 22:00:23 -0000 Received: (qmail 90410 invoked by uid 500); 3 Feb 2009 22:00:22 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 90386 invoked by uid 500); 3 Feb 2009 22:00:22 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 90372 invoked by uid 99); 3 Feb 2009 22:00:22 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Feb 2009 14:00:22 -0800 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Feb 2009 22:00:21 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id DDD85234C48B for ; Tue, 3 Feb 2009 13:59:59 -0800 (PST) Message-ID: <580150673.1233698399894.JavaMail.jira@brutus> Date: Tue, 3 Feb 2009 13:59:59 -0800 (PST) From: "Jody Grassel (JIRA)" To: dev@openjpa.apache.org Subject: [jira] Created: (OPENJPA-894) LEFT JOIN FETCH queries with fresh fetches from the db do not follow JPA Spec 4.4.5.3 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org LEFT JOIN FETCH queries with fresh fetches from the db do not follow JPA Spec 4.4.5.3 ------------------------------------------------------------------------------------- Key: OPENJPA-894 URL: https://issues.apache.org/jira/browse/OPENJPA-894 Project: OpenJPA Issue Type: Bug Components: query Affects Versions: 1.2.0 Environment: Any, tested with Windows Reporter: Jody Grassel Discovered what seems to be a break with JPA Specification 1.0, section 4.4.5.3 (Fetch Joins). The query in question uses the LEFT JOIN FETCH sematic, so there is the expectation that the result list will contain a copy of the entity reference for every match on the right side of the join (the spec uses the example with the query "SELECT d FROM department d LEFT JOIN FETCH d.employees WHERE d.deptno = 1" where 5 employees are members of department(pk=1) the resultlist should have 5 copies of Department(pk=1). ) Now, if I create all of the entities, persist them to the database, but do not clear the persistence context (leaving all the new entities managed by the persistence context still), the query performs as expected. I get multiple copies of the entity I issued the query for, one for each item successfully matching the LEFT JOIN FETCH. In the example I will update shortly, I get: [junit] -------------------------------------------------- [junit] Executing testQuery001 [junit] Executing named query getAGroup with intData=42 ... [junit] ResultList size: 8 [junit] 1 EntityA(id=1): 42, Entity A - PK 1 [junit] 1 EntityA(id=1): 42, Entity A - PK 1 [junit] 1 EntityA(id=1): 42, Entity A - PK 1 [junit] 1 EntityA(id=1): 42, Entity A - PK 1 [junit] 1 EntityA(id=2): 42, Entity A - PK 2 [junit] 1 EntityA(id=2): 42, Entity A - PK 2 [junit] 1 EntityA(id=2): 42, Entity A - PK 2 [junit] 1 EntityA(id=2): 42, Entity A - PK 2 However, if I clear the persistence context, forcing OpenJPA to make a fetch from the database, I only get unique instances of the entity I issued the query for, not multiple copies for each match on the right side of the join. [junit] -------------------------------------------------- [junit] Executing testQuery002 [junit] Clearing persistence context... [junit] Executing named query getAGroup with intData=42 ... [junit] ResultList size: 2 [junit] 1 EntityA(id=1): 42, Entity A - PK 1 [junit] 1 EntityA(id=2): 42, Entity A - PK 2 Both tests use the exact same code for everything, except testQuery002 does a em.clear() before running the query. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.