You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by ht...@apache.org on 2013/10/17 22:17:41 UTC
svn commit: r1533243 - in /openjpa/branches/2.3.x: ./
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/external/
openjpa-persistence-jdbc/src/test/java/org/apache/open...
Author: hthomann
Date: Thu Oct 17 20:17:41 2013
New Revision: 1533243
URL: http://svn.apache.org/r1533243
Log:
OPENJPA-2425: SELECT fields with @ExternalValues defined returns datastore values instead of unmapped fields - applied Albert Lee's patch to 2.3.x.
Modified:
openjpa/branches/2.3.x/ (props changed)
openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java
openjpa/branches/2.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/external/TestExternalValues.java
openjpa/branches/2.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/jointable/onetomany/ (props changed)
Propchange: openjpa/branches/2.3.x/
------------------------------------------------------------------------------
Merged /openjpa/branches/2.2.1.x:r1530347
Merged /openjpa/branches/2.2.x:r1530364
Merged /openjpa/branches/2.1.x:r1530146
Merged /openjpa/trunk:r1530368
Modified: openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java?rev=1533243&r1=1533242&r2=1533243&view=diff
==============================================================================
--- openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java (original)
+++ openjpa/branches/2.3.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/PCPath.java Thu Oct 17 20:17:41 2013
@@ -918,14 +918,18 @@ public class PCPath
}
Object ret;
- if (_key)
+ if (_key) {
// Map key is a java primitive type
- // example: Map<Integer, Employee> emps
- ret = res.getObject(pstate.cols[0],
- null, pstate.joins);
- else
- ret = pstate.field.loadProjection(ctx.store, ctx.fetch, res,
- pstate.joins);
+ // example: Map<Integer, Employee> emps
+ ret = res.getObject(pstate.cols[0], null, pstate.joins);
+ } else {
+ ret = pstate.field.loadProjection(ctx.store, ctx.fetch, res, pstate.joins);
+ }
+
+ if (pstate.field.isExternalized()) {
+ ret = pstate.field.getFieldValue(ret, ctx.store.getContext());
+ }
+
if (_cast != null)
ret = Filters.convert(ret, _cast);
return ret;
Modified: openjpa/branches/2.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/external/TestExternalValues.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/external/TestExternalValues.java?rev=1533243&r1=1533242&r2=1533243&view=diff
==============================================================================
--- openjpa/branches/2.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/external/TestExternalValues.java (original)
+++ openjpa/branches/2.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/external/TestExternalValues.java Thu Oct 17 20:17:41 2013
@@ -18,6 +18,9 @@
*/
package org.apache.openjpa.persistence.external;
+import java.util.Iterator;
+import java.util.List;
+
import javax.persistence.EntityManager;
import javax.persistence.Query;
@@ -55,6 +58,30 @@ public class TestExternalValues extends
Assert.assertEquals("MEDIUM", aPrime.getS2());
Assert.assertEquals(true, aPrime.getUseStreaming());
+ em.getTransaction().begin();
+
+ entity = new EntityA();
+ entity.setS1("LARGE");
+ entity.setS2("LARGE");
+ entity.setUseStreaming(false);
+ em.persist(entity);
+
+ em.getTransaction().commit();
+
+ q = em.createQuery("SELECT t0.id, t0.s1, t0._useStreaming, t0.s2 FROM EntityA t0 ORDER BY t0.s1 DESC");
+ List<Object[]> res = q.getResultList();
+
+ Iterator<Object[]> itr = res.iterator();
+ Object[] values = itr.next();
+ Assert.assertEquals("SMALL", values[1]);
+ Assert.assertEquals(Boolean.TRUE, values[2]);
+ Assert.assertEquals("MEDIUM", values[3]);
+
+ values = itr.next();
+ Assert.assertEquals("LARGE", values[1]);
+ Assert.assertEquals(Boolean.FALSE, values[2]);
+ Assert.assertEquals("LARGE", values[3]);
+
em.close();
}
Propchange: openjpa/branches/2.3.x/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/jointable/onetomany/
------------------------------------------------------------------------------
Merged /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/inheritance/jointable/onetomany:r1530368