Return-Path: Delivered-To: apmail-openjpa-commits-archive@www.apache.org Received: (qmail 57286 invoked from network); 15 Apr 2009 06:18:31 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 15 Apr 2009 06:18:31 -0000 Received: (qmail 36438 invoked by uid 500); 15 Apr 2009 06:18:31 -0000 Delivered-To: apmail-openjpa-commits-archive@openjpa.apache.org Received: (qmail 36370 invoked by uid 500); 15 Apr 2009 06:18:31 -0000 Mailing-List: contact commits-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 commits@openjpa.apache.org Received: (qmail 36361 invoked by uid 99); 15 Apr 2009 06:18:31 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 Apr 2009 06:18:31 +0000 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.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 15 Apr 2009 06:18:30 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id EE4E6238898B; Wed, 15 Apr 2009 06:18:09 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r765064 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex3/TestSpec10_1_26_Ex3.java Date: Wed, 15 Apr 2009 06:18:08 -0000 To: commits@openjpa.apache.org From: fancy@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20090415061809.EE4E6238898B@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: fancy Date: Wed Apr 15 06:18:07 2009 New Revision: 765064 URL: http://svn.apache.org/viewvc?rev=765064&view=rev Log: OPENJPA-1035 JPA2 Query allow map key/value path to appear as argument to scalar functions Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex3/TestSpec10_1_26_Ex3.java Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java?rev=765064&r1=765063&r2=765064&view=diff ============================================================================== --- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java (original) +++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java Wed Apr 15 06:18:07 2009 @@ -779,15 +779,10 @@ Object ret; if (_key) - if (pstate.field.getKey().getValueMappedBy() != null) - ret = ((FieldMapping) pstate.field.getKey(). - getValueMappedByMetaData()). - loadProjection(ctx.store, ctx.fetch, res, pstate.joins); - else - // Map key is a java primitive type - // example: Map emps - ret = res.getObject(pstate.cols[0], - null, pstate.joins); + // Map key is a java primitive type + // example: Map emps + ret = res.getObject(pstate.cols[0], + null, pstate.joins); else ret = pstate.field.loadProjection(ctx.store, ctx.fetch, res, pstate.joins); Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex3/TestSpec10_1_26_Ex3.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex3/TestSpec10_1_26_Ex3.java?rev=765064&r1=765063&r2=765064&view=diff ============================================================================== --- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex3/TestSpec10_1_26_Ex3.java (original) +++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/jdbc/maps/spec_10_1_26_ex3/TestSpec10_1_26_Ex3.java Wed Apr 15 06:18:07 2009 @@ -116,6 +116,46 @@ if (!inMemory) assertTrue(sql.get(0).toUpperCase().indexOf(" GROUP BY ") != -1); + query = "select KEY(e) from Department d, " + + " in (d.emps) e where VALUE(e).department.deptId = 1" + + " ORDER BY KEY(e).fName"; + q = em.createQuery(query); + if (inMemory) + setCandidate(q, Department.class); + rs = q.getResultList(); + if (!inMemory) + assertEquals(((EmployeeName) rs.get(0)).getFName(), "f1"); + + query = "select KEY(e) from Department d, " + + " in (d.emps) e where VALUE(e).name.fName = 'f1'" + + " ORDER BY KEY(e).fName"; + q = em.createQuery(query); + if (inMemory) + setCandidate(q, Department.class); + rs = q.getResultList(); + if (!inMemory) + assertEquals(((EmployeeName) rs.get(0)).getFName(), "f1"); + + query = "select KEY(e) from Department d, " + + " in (d.emps) e where SUBSTRING(VALUE(e).name.fName, 1) = 'f1'" + + " ORDER BY KEY(e).fName"; + q = em.createQuery(query); + if (inMemory) + setCandidate(q, Department.class); + rs = q.getResultList(); + if (!inMemory) + assertEquals(((EmployeeName) rs.get(0)).getFName(), "f1"); + + query = "select KEY(e) from Department d, " + + " in (d.emps) e where LOCATE(VALUE(e).name.fName, 'f1') <> 0" + + " ORDER BY KEY(e).fName"; + q = em.createQuery(query); + if (inMemory) + setCandidate(q, Department.class); + rs = q.getResultList(); + if (!inMemory) + assertEquals(((EmployeeName) rs.get(0)).getFName(), "f1"); + em.close(); }