Example #1
0
 public static string GetLHSTableName(
     IAssociationType type,
     int property,
     IOuterJoinLoadable lhsPersister
     )
 {
     if (type.UseLHSPrimaryKey)
     {
         return lhsPersister.TableName;
     }
     else
     {
         string propertyName = type.LHSPropertyName;
         if (propertyName == null)
         {
             //if there is no property-ref, assume the join
             //is to the subclass table (ie. the table of the
             //subclass that the association belongs to)
             return lhsPersister.GetSubclassPropertyTableName(property);
         }
         else
         {
             //handle a property-ref
             string propertyRefTable = lhsPersister.GetPropertyTableName(propertyName);
             if (propertyRefTable == null)
             {
                 //it is possible that the tree-walking in OuterJoinLoader can get to
                 //an association defined by a subclass, in which case the property-ref
                 //might refer to a property defined on a subclass of the current class
                 //in this case, the table name is not known - this temporary solution
                 //assumes that the property-ref refers to a property of the subclass
                 //table that the association belongs to (a reasonable guess)
                 //TODO: fix this, add: IOuterJoinLoadable.getSubclassPropertyTableName(string propertyName)
                 propertyRefTable = lhsPersister.GetSubclassPropertyTableName(property);
             }
             return propertyRefTable;
         }
     }
 }