Query objects within other objects with Detached Criteria

0

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);
    
asked by Moises Baeza 06.09.2017 в 20:49
source

1 answer

0

I found the answer to my question and if someone like me serves it perfectly.

    DetachedCriteria criteria = this.createDetachedCriteria();
    criteria.createAlias("cristal", "cr");
    if(cristalForm.getNags() != null && !cristalForm.getNags().isEmpty()){
        criteria.add(Restrictions.eq("cr.nags", cristalForm.getNags()));
    }
    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() + "%"));
    }
    return (List<CristalLista>) getHibernateTemplate().findByCriteria(criteria);
    
answered by 10.09.2017 / 18:46
source