I need to make a query based on filters. The filters are Nags
, TipoCristal
and descripcion
. My object CristalLista
contains the properties TipoCristal
, Descripcion
and Cristal
. Within glass is the Nags
.
How can I make this query? I give an example of how I thought about it, but it does not work:
DetachedCriteria criteriaTwo = DetachedCriteria.forClass(Cristal.class);
if(cristalForm.getNags() != null && !cristalForm.getNags().isEmpty()){
criteriaTwo.add(Restrictions.eq("nags", cristalForm.getNags()));
}
DetachedCriteria criteria = this.createDetachedCriteria();
if(cristalForm.getTipoCristal() != null && !cristalForm.getTipoCristal().isEmpty()){
criteria.add(Restrictions.like("tipoCristal", "%" + cristalForm.getTipoCristal() + "%"));
}
if(cristalForm.getDescripcion() != null && !cristalForm.getDescripcion().isEmpty()) {
criteria.add(Restrictions.like("descripcion", "%" + cristalForm.getDescripcion() + "%"));
}
criteria.add(Subqueries.propertyEq("cristal", criteriaTwo));
return (List<CristalLista>) getHibernateTemplate().findByCriteria(criteria);