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.