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());
+ }
}