How to create criteria in groovy/grails for nested object?

Patty picture Patty · Oct 17, 2012 · Viewed 16.3k times · Source

I need help on creating hibernate criteria for nested object. For example :

class office{
    Integer id;
    OfficeDetails cmdData ;
}

class OfficeDetails {
    Integer id;
    Region region;

}

class Region {
    Integer id;
    Integer regionNum;
}

Now, from the service class ( officeService) I am trying to pull up all of the offices that matches a certain region as :

List<Office> findAllByRegion( Integer regionNumber){
    def criteria =  {  eq ( 'cmdData.region.regionNum', regionNumber ) }
    def allOfficesInTheRegion =  Office.findAll(criteria)

    return allOfficesInTheRegion
}

Always getting exception :"org.hibernate.QueryException: could not resolve property:" I need to find out right way to create criteria for this query.Can anyone help?

Answer

Ian Roberts picture Ian Roberts · Oct 17, 2012

See "querying associations" under the criteria section of the user guide:

def criteria = {
  cmdData {
    region {
      eq('regionNum', regionNumber)
    }
  }
}