You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2010/01/28 12:16:53 UTC

svn commit: r904038 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/access/jdbc/ test/java/org/apache/cayenne/access/

Author: aadamchik
Date: Thu Jan 28 11:16:52 2010
New Revision: 904038

URL: http://svn.apache.org/viewvc?rev=904038&view=rev
Log:
CAY-1376 Certain EJBQL queries have mismatched table aliases

part 2, patch by Ksenia Khailenko

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsTest.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java?rev=904038&r1=904037&r2=904038&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java Thu Jan 28 11:16:52 2010
@@ -321,7 +321,7 @@
         // reverse order to get the nearest to the correlated of the direct relation
         for (int i = dbRelationships.size() - 1; i > 0; i--) {
             DbRelationship dbRelationship = dbRelationships.get(i);
-            String subqueryTargetTableName = dbRelationship.getTargetEntityName();
+            String subqueryTargetTableName = ((DbEntity)dbRelationship.getTargetEntity()).getFullyQualifiedName();
             String subqueryTargetAlias;
             if (i == dbRelationships.size() - 1) {
                 subqueryTargetAlias = subqueryRootAlias;
@@ -337,9 +337,9 @@
 
             context.append(" JOIN ");
 
-            String subquerySourceTableName = dbRelationship
-                    .getSourceEntity()
-                    .getName();
+            String subquerySourceTableName = ((DbEntity)dbRelationship
+                    .getSourceEntity())
+                    .getFullyQualifiedName();
             String subquerySourceAlias = context.getTableAlias(
                     subquerySourceTableName,
                     subquerySourceTableName);

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java?rev=904038&r1=904037&r2=904038&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java Thu Jan 28 11:16:52 2010
@@ -134,14 +134,14 @@
                 for (int i = 1; i < joinRelationships.size(); i++) {
                     DbRelationship dbRelationship = joinRelationships.get(i);
 
-                    String subquerySourceTableName = dbRelationship
-                            .getSourceEntity()
-                            .getName();
+                    String subquerySourceTableName = ((DbEntity)dbRelationship
+                            .getSourceEntity())
+                            .getFullyQualifiedName();
                     String subquerySourceAlias = context.getTableAlias(
                             subquerySourceTableName,
                             subquerySourceTableName);
 
-                    String subqueryTargetTableName = dbRelationship.getTargetEntityName();
+                    String subqueryTargetTableName = ((DbEntity)dbRelationship.getTargetEntity()).getFullyQualifiedName();
                     
                     String subqueryTargetAlias = "";
                     if(i==joinRelationships.size()-1){
@@ -329,13 +329,13 @@
                         if (next instanceof DbRelationship) {
                             DbRelationship rel = (DbRelationship) next;
                             context.append(" LEFT OUTER JOIN ");
-                            String targetEntityName = rel.getTargetEntityName();
+                            String targetEntityName = ((DbEntity)rel.getTargetEntity()).getFullyQualifiedName();
                             String subqueryTargetAlias = context.getTableAlias(id
                                     .getEntityId(), targetEntityName);
                             context.append(targetEntityName).append(' ').append(
                                     subqueryTargetAlias);
                             generateJoiningExpression(rel, context.getTableAlias(id
-                                    .getEntityId(), rel.getSourceEntity().getName()), subqueryTargetAlias);
+                                    .getEntityId(), ((DbEntity)rel.getSourceEntity()).getFullyQualifiedName()), subqueryTargetAlias);
                         }
 
                     }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsTest.java?rev=904038&r1=904037&r2=904038&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextEJBQLFlattenedRelationshipsTest.java Thu Jan 28 11:16:52 2010
@@ -257,5 +257,12 @@
         assertTrue(ids.contains(new Integer(2)));
 
     }
-   
+    public void testGroupByFlattenedRelationship() throws Exception {
+        String ejbql = "SELECT COUNT(ft3), ft3.toFT1 FROM FlattenedTest3 ft3  GROUP BY ft3.toFT1 ";
+  
+         ObjectContext context = createDataContext();
+         EJBQLQuery query = new EJBQLQuery(ejbql);
+         List<?> objects = context.performQuery(query);
+         assertEquals(2, objects.size());
+    }
 }