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/04 21:03:40 UTC
svn commit: r374916 -
/db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
Author: brj
Date: Sat Feb 4 12:03:37 2006
New Revision: 374916
URL: http://svn.apache.org/viewcvs?rev=374916&view=rev
Log:
fix for ojb-94
Modified:
db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
URL: http://svn.apache.org/viewcvs/db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java?rev=374916&r1=374915&r2=374916&view=diff
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java Sat Feb 4 12:03:37 2006
@@ -292,25 +292,12 @@
}
setFieldDescriptorForAttribute(anAttrInfo.getParent().getAttribute(), fld);
-
- // added to suport the super reference descriptor
- if (!fld.getClassDescriptor().getFullTableName().equals(tableAlias.table) && tableAlias.hasJoins())
- {
- Iterator itr = tableAlias.joins.iterator();
- while (itr.hasNext())
- {
- Join join = (Join) itr.next();
- if (join.right.table.equals(fld.getClassDescriptor().getFullTableName()))
- {
- tableAlias = join.right;
- colName = fld.getColumnName();
- break;
- }
- }
- }
- else
+ colName = fld.getColumnName();
+
+ // added to support the super reference descriptor, use the corresponding tableAlias
+ if (!fld.getClassDescriptor().equals(tableAlias.cld) && tableAlias.hasJoins())
{
- colName = fld.getColumnName();
+ tableAlias = getTableAliasForClassDescriptor(fld.getClassDescriptor());
}
appendColumn(tableAlias, colName, buf);
@@ -354,11 +341,11 @@
* @param anAttrName the name of the attribute
* @return FieldDescriptor
*/
- protected FieldDescriptor getFieldDescriptor(TableAlias aTableAlias, String anAttrName)
+ private FieldDescriptor getFieldDescriptor(TableAlias aTableAlias, String anAttrName)
{
FieldDescriptor fld = null;
- if (aTableAlias != null)
+ if (aTableAlias != null && aTableAlias.cld != null)
{
fld = aTableAlias.cld.getFieldDescriptorByName(anAttrName);
if (fld == null)
@@ -381,26 +368,25 @@
/**
* Get FieldDescriptor from joined superclass.
*/
- private FieldDescriptor getFldFromJoin(TableAlias aTableAlias, String aColName)
+ private FieldDescriptor getFldFromJoin(TableAlias aTableAlias, String attrName)
{
FieldDescriptor fld = null;
// Search Join Structure for attribute
+ // TODO BRJ: imo we have to consider 'superClass' joins only
if (aTableAlias.joins != null)
{
Iterator itr = aTableAlias.joins.iterator();
while (itr.hasNext())
{
Join join = (Join) itr.next();
- ClassDescriptor cld = join.right.cld;
-
- if (cld != null)
+ if ("superClass".equals(join.name))
{
- fld = cld.getFieldDescriptorByName(aColName);
- if (fld != null)
- {
- break;
- }
+ fld = getFieldDescriptor(join.right, attrName);
+ }
+ if (fld != null)
+ {
+ break;
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org