You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by an...@apache.org on 2010/03/03 15:00:40 UTC
svn commit: r918474 - in
/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/access/jdbc/
test/java/org/apache/cayenne/access/
Author: andrey
Date: Wed Mar 3 14:00:40 2010
New Revision: 918474
URL: http://svn.apache.org/viewvc?rev=918474&view=rev
Log:
CAY-1376 Certain EJBQL queries have mismatched table aliases.
Modified:
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java
cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java?rev=918474&r1=918473&r2=918474&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java Wed Mar 3 14:00:40 2010
@@ -73,13 +73,14 @@
@Override
public boolean visitIdentificationVariable(EJBQLExpression expression) {
- String idVariableAbsolutePath = idPath+"."+expression.getText();
+ String idVariableAbsolutePath = fullPath + "." + expression.getText();
ClassDescriptor descriptor = context.getEntityDescriptor(idVariableAbsolutePath);
if (descriptor != null) {
this.lastAlias = context.getTableAlias(idVariableAbsolutePath, descriptor.getEntity().getDbEntity().getFullyQualifiedName());
}
this.lastPathComponent = expression.getText();
+ this.fullPath = fullPath + '.' + lastPathComponent;
return true;
}
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java?rev=918474&r1=918473&r2=918474&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java Wed Mar 3 14:00:40 2010
@@ -50,7 +50,7 @@
protected String lastAlias;
protected String idPath;
protected String joinMarker;
- private String fullPath;
+ protected String fullPath;
private boolean usingAliases;
public EJBQLPathTranslator(EJBQLTranslationContext context) {
Modified: cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java?rev=918474&r1=918473&r2=918474&view=diff
==============================================================================
--- cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java (original)
+++ cayenne/main/branches/STABLE-3.0/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLGroupByHavingTest.java Wed Mar 3 14:00:40 2010
@@ -23,7 +23,6 @@
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
-import java.util.Set;
import org.apache.art.Artist;
import org.apache.art.Gallery;
@@ -241,4 +240,18 @@
}
}
+ public void testGroupByChainedJoins() throws Exception {
+ createTestData("prepare");
+
+ String ejbql = "SELECT p.painting.toArtist.paintingArray FROM PaintingInfo p"
+ + " GROUP BY p.painting.toArtist.paintingArray";
+ EJBQLQuery query = new EJBQLQuery(ejbql);
+ List data = createDataContext().performQuery(query);
+
+ ejbql = "SELECT p.painting.toArtist FROM PaintingInfo p"
+ + " GROUP BY p.painting.toArtist";
+ query = new EJBQLQuery(ejbql);
+ createDataContext().performQuery(query);
+ }
+
}