Author: brj
Date: Fri Feb 3 13:15:36 2006
New Revision: 374748
URL: http://svn.apache.org/viewcvs?rev=374748&view=rev
Log:
fixed npe in buildSuperJoin, resolving manager.name still a problem
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
URL:
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java?rev=374748&r1=374747&r2=374748&view=diff
==============================================================================
---
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
(original)
+++
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
Fri Feb 3 13:15:36 2006
@@ -1207,7 +1207,7 @@
outer = outer || (curr.cld == prev.cld) ||
curr.hasExtents();
addJoin(prev, prevKeys, curr, keys, outer,
attr);
- buildSuperJoinTree(curr, cld, aPath, outer);
+ buildSuperJoinTree(curr, cld, attrPath, outer);
}
prev = curr;
@@ -1414,7 +1414,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);
+ }
}
/**
@@ -1778,10 +1783,6 @@
/**
* build the Join-Information if a super reference exists
- *
- * @param left
- * @param cld
- * @param name
*/
protected void buildSuperJoinTree(TableAlias left, ClassDescriptor cld,
String name, boolean useOuterJoin)
{
@@ -1790,12 +1791,10 @@
{
SuperReferenceDescriptor superRef = cld.getSuperReference();
FieldDescriptor[] leftFields =
superRef.getForeignKeyFieldDescriptors(cld);
- TableAlias base_alias = getTableAliasForPath(name, null, null);
- String aliasName = String.valueOf(getAliasChar()) + m_aliasCount++;
- TableAlias right = new TableAlias(superCld, aliasName,
useOuterJoin, null);
-
+
+ TableAlias right = createTableAlias(superCld, null, name);
Join join1to1 = new Join(left, leftFields, right,
superCld.getPkFields(), useOuterJoin, "superClass");
- base_alias.addJoin(join1to1);
+ left.addJoin(join1to1);
buildSuperJoinTree(right, superCld, name, useOuterJoin);
}
@@ -1803,10 +1802,6 @@
/**
* build the Join-Information for Subclasses having a super reference to
this class
- *
- * @param left
- * @param cld
- * @param name
*/
private void buildMultiJoinTree(TableAlias left, ClassDescriptor cld,
String name, boolean useOuterJoin)
{
@@ -1821,13 +1816,10 @@
{
FieldDescriptor[] leftFields = subCld.getPkFields();
FieldDescriptor[] rightFields =
srd.getForeignKeyFieldDescriptors(subCld);
- TableAlias base_alias = getTableAliasForPath(name, null, 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]