public void AddSqlQuery(HbmSqlQuery querySchema) { mappings.AddSecondPass(delegate { string queryName = querySchema.name; string queryText = querySchema.GetText(); bool cacheable = querySchema.cacheable; string region = querySchema.cacheregion; int timeout = string.IsNullOrEmpty(querySchema.timeout) ? RowSelection.NoValue : int.Parse(querySchema.timeout); int fetchSize = querySchema.fetchsizeSpecified ? querySchema.fetchsize : -1; bool readOnly = querySchema.readonlySpecified ? querySchema.@readonly : false; string comment = null; bool callable = querySchema.callable; string resultSetRef = querySchema.resultsetref; FlushMode flushMode = FlushModeConverter.GetFlushMode(querySchema); CacheMode? cacheMode = (querySchema.cachemodeSpecified) ? querySchema.cachemode.ToCacheMode() : null; IDictionary<string,string> parameterTypes = new LinkedHashMap<string,string>(); IList<string> synchronizedTables = GetSynchronizedTables(querySchema); NamedSQLQueryDefinition namedQuery; if (string.IsNullOrEmpty(resultSetRef)) { ResultSetMappingDefinition definition = new ResultSetMappingBinder(Mappings).Create(querySchema); namedQuery = new NamedSQLQueryDefinition(queryText, definition.GetQueryReturns(), synchronizedTables, cacheable, region, timeout, fetchSize, flushMode, cacheMode, readOnly, comment, parameterTypes, callable); } else // TODO: check there is no actual definition elemnents when a ref is defined namedQuery = new NamedSQLQueryDefinition(queryText, resultSetRef, synchronizedTables, cacheable, region, timeout, fetchSize, flushMode, cacheMode, readOnly, comment, parameterTypes, callable); log.DebugFormat("Named SQL query: {0} -> {1}", queryName, namedQuery.QueryString); mappings.AddSQLQuery(queryName, namedQuery); }); }
public void AddSQLQuery(string name, NamedSQLQueryDefinition query) { CheckQueryExists(name); sqlqueries[name] = query; }
public void DoSecondPass(IDictionary persistentClasses) { String queryName = queryElem.Attributes["name"].Value; if (path != null) { queryName = path + '.' + queryName; } bool cacheable = "true".Equals(XmlHelper.GetAttributeValue(queryElem, "cacheable")); string region = XmlHelper.GetAttributeValue(queryElem, "cache-region"); XmlAttribute tAtt = queryElem.Attributes["timeout"]; int timeout = tAtt == null ? -1 : int.Parse(tAtt.Value); XmlAttribute fsAtt = queryElem.Attributes["fetch-size"]; int fetchSize = fsAtt == null ? -1 : int.Parse(fsAtt.Value); XmlAttribute roAttr = queryElem.Attributes["read-only"]; bool readOnly = roAttr != null && "true".Equals(roAttr.Value); XmlAttribute cacheModeAtt = queryElem.Attributes["cache-mode"]; string cacheMode = cacheModeAtt == null ? null : cacheModeAtt.Value; XmlAttribute cmAtt = queryElem.Attributes["comment"]; string comment = cmAtt == null ? null : cmAtt.Value; IList synchronizedTables = new ArrayList(); foreach (XmlNode item in queryElem.SelectNodes(HbmConstants.nsSynchronize, nsmgr)) { synchronizedTables.Add(XmlHelper.GetAttributeValue(item, "table")); } bool callable = "true".Equals(XmlHelper.GetAttributeValue(queryElem, "callable")); NamedSQLQueryDefinition namedQuery; XmlAttribute @ref = queryElem.Attributes["resultset-ref"]; string resultSetRef = @ref == null ? null : @ref.Value; if (StringHelper.IsNotEmpty(resultSetRef)) { namedQuery = new NamedSQLQueryDefinition( queryElem.InnerText, resultSetRef, synchronizedTables, cacheable, region, timeout, fetchSize, HbmBinder.GetFlushMode(XmlHelper.GetAttributeValue(queryElem, "flush-mode")), //HbmBinder.GetCacheMode(cacheMode), readOnly, comment, HbmBinder.GetParameterTypes(queryElem), callable ); //TODO check there is no actual definition elemnents when a ref is defined } else { ResultSetMappingDefinition definition = BuildResultSetMappingDefinition(queryElem, path, mappings); namedQuery = new NamedSQLQueryDefinition( queryElem.InnerText, definition.GetQueryReturns(), synchronizedTables, cacheable, region, timeout, fetchSize, HbmBinder.GetFlushMode(XmlHelper.GetAttributeValue(queryElem, "flush-mode")), //HbmBinder.GetCacheMode(cacheMode), readOnly, comment, HbmBinder.GetParameterTypes(queryElem), callable ); } log.Debug("Named SQL query: " + queryName + " -> " + namedQuery.QueryString); mappings.AddSQLQuery(queryName, namedQuery); }