You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by jg...@apache.org on 2014/03/25 17:34:38 UTC
svn commit: r1581406 -
/openjpa/branches/2.2.1.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java
Author: jgrassel
Date: Tue Mar 25 16:34:37 2014
New Revision: 1581406
URL: http://svn.apache.org/r1581406
Log:
OPENJPA-2482: java.sql.SQLException when processing a query result
Modified:
openjpa/branches/2.2.1.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java
Modified: openjpa/branches/2.2.1.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java
URL: http://svn.apache.org/viewvc/openjpa/branches/2.2.1.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java?rev=1581406&r1=1581405&r2=1581406&view=diff
==============================================================================
--- openjpa/branches/2.2.1.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java (original)
+++ openjpa/branches/2.2.1.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SelectImpl.java Tue Mar 25 16:34:37 2014
@@ -55,8 +55,8 @@ import org.apache.openjpa.jdbc.schema.Co
import org.apache.openjpa.jdbc.schema.ForeignKey;
import org.apache.openjpa.jdbc.schema.Table;
import org.apache.openjpa.kernel.StoreContext;
-import org.apache.openjpa.kernel.exps.Value;
import org.apache.openjpa.kernel.exps.Context;
+import org.apache.openjpa.kernel.exps.Value;
import org.apache.openjpa.lib.log.Log;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.util.ApplicationIds;
@@ -2319,7 +2319,7 @@ public class SelectImpl
implements PathJoins {
private SelectImpl _sel = null;
- private Map<Column, Object> cachedColumnAlias_ = null;
+ private Map<CachedColumnAliasKey, Object> cachedColumnAlias_ = null;
// position in selected columns list where we expect the next load
private int _pos = 0;
@@ -2403,9 +2403,10 @@ public class SelectImpl
if (pj != null && pj.path() != null) {
Object columnAlias = getColumnAlias((Column) obj, pj);
if (joins == null) {
- if (cachedColumnAlias_ == null)
- cachedColumnAlias_ = new HashMap<Column, Object>();
- cachedColumnAlias_.put((Column) obj, columnAlias);
+ if (cachedColumnAlias_ == null) {
+ cachedColumnAlias_ = new HashMap<CachedColumnAliasKey, Object>();
+ }
+ cachedColumnAlias_.put(new CachedColumnAliasKey((Column) obj, pj), columnAlias);
}
return columnAlias != null && _sel._selects.contains(columnAlias);
}
@@ -2447,6 +2448,7 @@ public class SelectImpl
protected int findObject(Object obj, Joins joins)
throws SQLException {
+ Object orig = obj;
if (_pos == _sel._selects.size())
_pos = 0;
@@ -2458,9 +2460,10 @@ public class SelectImpl
Column col = (Column) obj;
pk = (col.isPrimaryKey()) ? Boolean.TRUE : Boolean.FALSE;
if (joins == null && cachedColumnAlias_ != null) {
- obj = cachedColumnAlias_.get(col);
- if (obj == null)
+ obj = cachedColumnAlias_.get(new CachedColumnAliasKey((Column) obj, pj));
+ if (obj == null) {
obj = getColumnAlias(col, pj);
+ }
} else {
obj = getColumnAlias(col, pj);
}
@@ -2639,6 +2642,47 @@ public class SelectImpl
public void moveJoinsToParent() {
}
+
+ private static final class CachedColumnAliasKey {
+ private final Column col;
+ private final PathJoins pjs;
+
+ public CachedColumnAliasKey(Column c, PathJoins p) {
+ col = c;
+ pjs = p;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((col == null) ? 0 : col.hashCode());
+ result = prime * result + ((pjs == null) ? 0 : pjs.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ CachedColumnAliasKey other = (CachedColumnAliasKey) obj;
+ if (col == null) {
+ if (other.col != null)
+ return false;
+ } else if (!col.equals(other.col))
+ return false;
+ if (pjs == null) {
+ if (other.pjs != null)
+ return false;
+ } else if (!pjs.equals(other.pjs))
+ return false;
+ return true;
+ }
+ }
}
/**
@@ -2773,9 +2817,9 @@ public class SelectImpl
+ String.valueOf(path);
}
- public void moveJoinsToParent() {
- }
+ public void moveJoinsToParent() {
}
+}
/**
* Joins implementation.