You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by br...@apache.org on 2006/02/03 22:22:51 UTC

svn commit: r374750 - /db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/TableAliasHandler.java

Author: brj
Date: Fri Feb  3 13:22:48 2006
New Revision: 374750

URL: http://svn.apache.org/viewcvs?rev=374750&view=rev
Log:
fixed npe in buildSuperJoin, resolving manager.name still a problem

Modified:
    db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/TableAliasHandler.java

Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/TableAliasHandler.java
URL: http://svn.apache.org/viewcvs/db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/TableAliasHandler.java?rev=374750&r1=374749&r2=374750&view=diff
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/TableAliasHandler.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/TableAliasHandler.java Fri Feb  3 13:22:48 2006
@@ -288,7 +288,12 @@
      */
     private void setTableAliasForPath(String aPath, List hintClasses, TableAlias anAlias)
     {
-        m_pathToAlias.put(buildAliasKey(aPath, hintClasses), anAlias);
+        String key = buildAliasKey(aPath, hintClasses);
+
+        if (m_pathToAlias.get(key) == null)
+        {
+            m_pathToAlias.put(key, anAlias);
+        }
     }
     
     /**
@@ -513,7 +518,7 @@
 				outer = outer || curr.hasExtents();
 				addJoin(prev, prevKeys, curr, keys, outer, attr);
 
-				buildSuperJoinTree(curr, cld, aPath, outer);
+				buildSuperJoinTree(curr, cld, attrPath, outer);
 			}
 
 			prev = curr;
@@ -781,10 +786,6 @@
     
     /**
      * build the Join-Information if a super reference exists
-     *
-     * @param left
-     * @param cld
-     * @param name
      */
     private void buildSuperJoinTree(TableAlias left, ClassDescriptor cld, String name, boolean useOuterJoin)
     {
@@ -796,11 +797,9 @@
             FieldDescriptor[] rightFields = srd.getForeignKeyTargetFieldDescriptors(superCld);
             TableAlias base_alias = getTableAliasForPath(name, null);
 
-            String aliasName = String.valueOf(getAliasChar()) + m_aliasCount++;
-            TableAlias right = new TableAlias(superCld, aliasName, false, null);
-
-            Join join1to1 = new Join(left, leftFields, right, rightFields, useOuterJoin, "superClass");
-            base_alias.addJoin(join1to1);
+            TableAlias right = createTableAlias(superCld, null, name);
+            Join join1to1 = new Join(left, leftFields, right, superCld.getPkFields(), useOuterJoin, "superClass");
+            left.addJoin(join1to1);
 
             buildSuperJoinTree(right, superCld, name, useOuterJoin);
         }
@@ -828,11 +827,9 @@
                 FieldDescriptor[] rightFields = srd.getForeignKeyFieldDescriptors(subCld);
                 TableAlias base_alias = getTableAliasForPath(name, null);
 
-                String aliasName = String.valueOf(getAliasChar()) + m_aliasCount++;
-                TableAlias right = new TableAlias(subCld, aliasName, false, null);
-
+                TableAlias right = createTableAlias(subCld, null, name);
                 Join join1to1 = new Join(left, leftFields, right, rightFields, useOuterJoin, "subClass");
-                base_alias.addJoin(join1to1);
+                left.addJoin(join1to1);
 
                 buildMultiJoinTree(right, subCld, name, useOuterJoin);
             }



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org