Seguramente en tus sistemas te has encontrado que tienes que hacer consultas con Hibernate que impliquen tener fija una condición y agregar varios criterios OR.
Vamos a suponer que tenemos una tabla con los siguientes campos
Producto(idProducto, nombreProducto, idProveedor, precio, categoria)
Y necesitas obtener los productos del proveedor "PR001" Y que el nombreProducto contenga "Computadora" O que el precio sea mayor a 1000 O que la categoria sea "PC", para lograrlo puedes hacer lo siguiente:
// creamos el criterio
Criteria criteria = session.createCriteria(Producto.class);
// Primero creamos el criterio fijo
Criterion critIdProveeodr = Restrictions.eq("idProveedor", "PR001");
// luego preparamos los OR
Disjunction disjunctionOrs = Restrictions.disjunction();
// y agregamos cada uno
disjunctionOrs.add(Restrictions.like("nombreProducto","Computadora",MatchMode.ANYWARE));
disjunctionOrs.add(Restrictions.gt("precio",1000));
disjunctionOrs.add(Restrictions.eq("categoria","PC"));
// creamos la combinación AND y OR
criteria.add( Restrictions.and(cridIdProveedor,disjunctionOrs));
// y por último los listamos
criteria.list();
Espero les sea de utilidad
Hablar en público...
Hace 8 años