2009-12-12 13 views
7

Zaimplementowałem funkcję wyszukiwania przy użyciu Castel Active Record. Myślałem, że kod jest na tyle prosty, ale trzymałem sięnhibernate hql z podanym parametrem

NHibernate.QueryParameterException: nie można zlokalizować nazwany parametr [searchKeyWords]

błędów. Czy ktoś może mi powiedzieć, co poszło nie tak? Stukrotne dzięki.

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(); 
     } 

Odpowiedz

13

Dlaczego nie przekazujesz znaku% za pomocą parametru?

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

nie potwierdziły swoje rozwiązanie jeszcze, ale mam podobną odpowiedź od http://www.stpe.se/2008/07/hibernate-hql-like-query-named-parameters/ i to rozwiązanie zadziałało. Więc zakładam, że twoje też jest słuszne. Dziękuję bardzo. –