2009-12-12 14 views
7

Castel Active Record'u kullanarak bir arama işlevi uygulamış oldum. Ben kodu yeterince basittir düşünce amanhibernate hql, adlandırılmış parametre

NHibernate.QueryParameterException elde tutulur: adlandırılmış parametre [searchKeyWords]

hataları bulamadı. Birisi bana neyin yanlış gittiğini söyleyebilir mi? Bir milyona teşekkürler.

public List<Seller> GetSellersWithEmail(string searchKeyWords) 
     { 
      if (string.IsNullOrEmpty(searchKeyWords)) 
      { 
       return new List<Seller>(); 
      } 
      string hql = @"select distinct s 
          from Seller s 
          where s.Deleted = false 
            and (s.Email like '%:searchKeyWords%')"; 

      SimpleQuery<Seller> q = new SimpleQuery<Seller>(hql); 
      q.SetParameter("searchKeyWords", searchKeyWords); 
      return q.Execute().ToList(); 
     } 

cevap

13

Neden% karakterini parametre ile aktarmıyorsunuz?

Henüz çözümünüzü doğruladı değil ama benzer bir cevabı var
string hql = @"select distinct s 
          from Seller s 
          where s.Deleted = false 
            and (s.Email like :searchKeyWords)"; 
    SimpleQuery<Seller> q = new SimpleQuery<Seller>(hql); 
    q.SetParameter("searchKeyWords", "%"+searchKeyWords+"%"); 
    return q.Execute().ToList(); 
+0

http://www.stpe.se/2008/07/hibernate-hql-like-query-named-parameters/ ve bu çözüm işe yaradı. Ben de seninkilerin de doğru olduğunu farz edeceğim. Çok teşekkürler. –