Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Java (http://www.forosdelweb.com/f45/)
-   -   Exclusión de parámetros con Hibernate Criteria (http://www.forosdelweb.com/f45/exclusion-parametros-con-hibernate-criteria-657116/)

Wayern 26/12/2008 13:10

Exclusión de parámetros con Hibernate Criteria
 
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.

GreenEyed 26/12/2008 14:07

Respuesta: Exclusión de parámetros con Hibernate Criteria
 
¿Quiza lo que has leido es utilizando "Query By Example" que tiene un metodo para hacer que se excluyan las propiedades que estan a cero?
http://hibernate.org/hib_docs/v3/ref...-examples.html

En el API Criteria en si no se ve algo similar.

Wayern 26/12/2008 14:43

Respuesta: Exclusión de parámetros con Hibernate Criteria
 
¿Qué tal GreenEyed? Muchas gracias por responder a esta pregunta... Efectivamente había leido el caso de Example utilizando el método
Código:

example.excludeZeroes();
Sin embargo, tampoco me funcionó con está instrucción... De todas formas seguiré investigando por este lado haber si puedo hacer que esta cosa funcione =).
Igual si tú tienes otra idea, pues déjamela saber...
Muchas gracias... Saludos.

GreenEyed 27/12/2008 06:57

Respuesta: Exclusión de parámetros con Hibernate Criteria
 
No lo he usado nunca, la unica otra solución que he visto es comprobar si el parametro es igual a null, y si lo es no añadir la clausula al Criteria, con un if de toda la vida.

Wayern 31/12/2008 13:04

Respuesta: Exclusión de parámetros con Hibernate Criteria
 
Si, a final de cuentas fue lo que terminé haciendo... Igual si logro descubiri como funciona te aviso para que también los sepas...
Gracias!


La zona horaria es GMT -6. Ahora son las 06:44.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.