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:
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. @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();
}
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:
Diga solamente:where ssoId='123456' and buc=null and hostCode='DE'
Código:
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.where ssoId='123456' and hostCode='DE'
Espero que me haya explicado correctamente y me puedan ayudar, un saludo y gracias anticipadas.

