2009-12-12 23 views
7

Implementé una función de búsqueda usando Castel Active Record. Pensé que el código es bastante simple, pero seguí recibiendonhibernate hql con parámetro con nombre

NHibernate.QueryParameterException: no se pudo localizar parámetro denominado [searchKeyWords]

errores. ¿Puede alguien decirme qué salió mal? Un millón de gracias.

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

Respuesta

13

¿Por qué no pasas el carácter% con el parámetro?

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

no he confirmado su solución todavía, pero me dieron una respuesta similar de http://www.stpe.se/2008/07/hibernate-hql-like-query-named-parameters/ y esa solución funcionó. Entonces, asumiré que el tuyo también es correcto. Muchas gracias. –

Cuestiones relacionadas