2009-12-12 2 views
7

Ich habe eine Suchfunktion mit Castel Active Record implementiert. Ich dachte, der Code ist einfach genug, aber ich hieltnhibernate hql mit benanntem Parameter

NHibernate.QueryParameterException bekommen: konnte nicht benannten Parameter [searchKeyWords]

Fehler lokalisieren. Kann mir jemand sagen, was schief gelaufen ist? Tausend Dank.

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

Antwort

13

Warum übergeben Sie nicht das% -Zeichen mit Parameter?

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

Ich habe Ihre Lösung noch nicht bestätigt, aber ich habe eine ähnliche Antwort von http://www.stpe.se/2008/07/hibernate-hql-like-query-named-parameters/ und diese Lösung hat funktioniert. Also werde ich davon ausgehen, dass auch dein Recht ist. Vielen Dank. –