Criteria genérico (Criteria + Example)

Este ejemplo es útil para pantallas tipo búsqueda para tablas u objetos maestros (no relacionadas), los filtros de búsqueda deben ser atributos del objeto a buscar.

El método en el Dao sería el siguiente:







public List getFindResults(Object filter) {
Criteria criteria = getSession().createCriteria(filter.getClass());
Example example = Example.create(filter).ignoreCase().enableLike(MatchMode.ANYWHERE);
criteria.add(example);
return criteria.list();
}



Como vemos en el código está utilizando LIKE e ignora que sea mayúsculas y minúsculas.

Restricciones:

a) El objeto no tiene otro objeto-entidad dentro de él

Habría que extender el criteria.

b) Solo es LIKE % %

Se podría agregar un atributo booleano más al método para determinar si es LIKE o no.

c) No hay ordenamiento

uhmm.. aqui si depende del programador, podría enviarse un parámetro más que sería un arreglo referenciando los atributos a ordenar.
Puede ser también creando una interface "Ordenable" (por ejemplo) señalando el campo por el que se va a ordenar.

Comentarios