Buenas tardes.
Estoy haciendo un proyecto con hibernate y spring. En un módulo requiero buscar una lista de datos usando diferentes parámetros, para dicha consulta estoy utilizando Criteria en lugar de HQL.
La consulta en si, funciona bien siempre y cuando ingrese todos los datos en el formulario, pero necesito que la clausula
where ignore aquellos parámetros que vegan nulos.
Este es el código que estoy utilizando para la consulta:
Código:
@SuppressWarnings("unchecked")
public List<TBillingRoute> searchGME(TBillingRoute billingRoute) {
Criteria c=getSession().createCriteria(TBillingRoute.class);
c.add(Restrictions.eq("billingRouteId", billingRoute.getBillingRouteId()));
c.add(Restrictions.eq("name", billingRoute.getName()));
c.add(Restrictions.eq("ssoId", billingRoute.getSsoId()));
c.add(Restrictions.eq("buc", billingRoute.getBuc()));
c.add(Restrictions.eq("hostCode", billingRoute.getHostCode()));
c.add(Restrictions.eq("homeCode", billingRoute.getHomeCode()));
c.add(Restrictions.eq("businessUnit", billingRoute.getBusinessUnit()));
return c.list();
}
Como les comento, ingresando
todos los parámetros en el formulario la consulta funciona bien, pero solo retorna un valor, puesto que la combinación solo puede existir una vez.
Lo que busco es lo siguiente, por ejemplo, si buc es el campo que no se ingresó en el formulario, que la clausula
where en lugar de decir:
Código:
where ssoId='123456' and buc=null and hostCode='DE'
Diga solamente:
Código:
where ssoId='123456' and hostCode='DE'
Según leí en algunos foros, Hibernate debería ignorar los parámetros que vienen nulos, pero no lo está haciendo, no sé si me falta agregar algo.
Espero que me haya explicado correctamente y me puedan ayudar, un saludo y gracias anticipadas.