我對我的過濾器使用了這個hql查詢。查詢完美工作,除了寬度(字符串)部分。HQL查詢問題
下面是該查詢,
public IList<ColorGroup> GetDistinctColorGroups(int typeID, int finishID, string width)
{
string queryStr = "Select distinct c from ColorGroup c inner join c.Products p " +
"where p.ShowOnline = 1 ";
if (typeID > 0)
queryStr += " and p.ProductType.ID = " + typeID;
if (finishID > 0)
queryStr += " and p.FinishGroup.ID = " + finishID;
if (width != "")
queryStr += " and p.Size.Width = " + width;
IList<ColorGroup> colors = NHibernateSession.CreateQuery(queryStr).List<ColorGroup>();
return colors;
}
ProductType和大小都相同的映射關係和。
這是錯誤;
NHibernate.QueryException:鄰近收集非法 語法:尺寸[選擇從.Domain.ColorGroup 不同C C 內部聯接c.Products p其中 p.ShowOnline = 1和p.ProductType.ID = 1和p.FinishGroup.ID = 5和p.Size.Width = 4]
任何想法?
編輯:
順便說一下在這個項目中我用這個LINQ查詢這實在是simmilar HQL之一。因此,我不認爲這是一個misstype或者更根本的錯誤..
colorOfSerie = (from p in products where p.Size.Width.Equals(width) select p.ColorGroup).Distinct().ToList<ColorGroup>();
如果刪除寬度條件,查詢是否運行,即不會引發錯誤? – 2010-04-22 08:46:28
是的,它正在處理它。 – ygit 2010-04-22 08:48:31