private INativeSQLQueryReturn CreateQueryReturn(object item, int count) { HbmLoadCollection loadCollectionSchema = item as HbmLoadCollection; HbmReturn returnSchema = item as HbmReturn; HbmReturnJoin returnJoinSchema = item as HbmReturnJoin; HbmReturnScalar returnScalarSchema = item as HbmReturnScalar; if (returnScalarSchema != null) { return(CreateScalarReturn(returnScalarSchema)); } else if (returnSchema != null) { return(CreateReturn(returnSchema, count)); } else if (returnJoinSchema != null) { return(CreateJoinReturn(returnJoinSchema)); } else if (loadCollectionSchema != null) { return(CreateLoadCollectionReturn(loadCollectionSchema)); } else { return(null); } }
private NativeSQLQueryRootReturn CreateReturn(HbmReturn returnSchema, int count) { String alias = returnSchema.alias; if (StringHelper.IsEmpty(alias)) { alias = "alias_" + count; // hack/workaround as sqlquery impl depend on having a key. } if (string.IsNullOrEmpty(returnSchema.@class) && string.IsNullOrEmpty(returnSchema.entityname)) { throw new MappingException("<return alias='" + alias + "'> must specify either a class or entity-name"); } string entityName = returnSchema.entityname ?? GetClassName(returnSchema.@class, mappings); LockMode lockMode = GetLockMode(returnSchema.lockmode); PersistentClass pc = mappings.GetClass(entityName); IDictionary <string, string[]> propertyResults = BindPropertyResults(alias, returnSchema.returndiscriminator, returnSchema.returnproperty, pc); return(new NativeSQLQueryRootReturn(alias, entityName, propertyResults, lockMode)); }