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.
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.
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