2009-12-12 9 views
7

Tôi đã triển khai chức năng tìm kiếm bằng cách sử dụng Castel Active Record. Tôi nghĩ đoạn code đơn giản là đủ nhưng tôi vẫn tiếp tục nhận đượchiber nhibernate với tham số có tên

NHibernate.QueryParameterException: không thể xác định vị trí tên tham số [searchKeyWords]

lỗi. Ai đó có thể cho tôi biết chuyện gì đã xảy ra không? Cảm ơn rất nhiều.

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

Trả lời

13

Tại sao bạn không chuyển% ký tự với thông số?

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

tôi đã không xác nhận giải pháp của bạn nhưng tôi nhận được một câu trả lời tương tự từ http://www.stpe.se/2008/07/hibernate-hql-like-query-named-parameters/ và giải pháp đó hoạt động. Vì vậy, tôi sẽ giả định của bạn là đúng quá. Cảm ơn rất nhiều. –