Hi,
this is my current method
Code:
public List getFoodProvidersOld(long block,long foodCategory,Boolean isDelivery,Boolean isRestaurant,Boolean isCatering,int pageStart,int pageSize) throws DAOException
    {
        Session session = HibernateUtil.currentSession();
        try
        {
            Criteria cr=session.createCriteria(hr.klopa.domain.FoodProvider.class); 
             
            cr.add( Expression.eq("active",Boolean.TRUE) );
            
            if(isDelivery!=null)
            {
                cr.add( Expression.eq("delivery",isDelivery) );
            }
            
            if(isRestaurant!=null)
            {
                cr.add( Expression.eq("restaurant",isRestaurant ) );
            }
            
            if(isCatering!=null)
            {
                cr.add( Expression.eq("catering",isCatering  ) );
            }
            
            if(block>0)
            {
                cr.createCriteria("blocks").add( Restrictions.eq("id",block ) );
            }
            
            if(foodCategory>0)
            {
                FoodCategory fc = new FoodCategory();
                fc.setId(foodCategory);
                cr.createCriteria("menuGroups").add( Restrictions.eq("foodCategory",fc ) );
            }
            
            cr.addOrder(Order.asc("name"));
            cr.setFirstResult(pageStart);
            cr.setMaxResults(pageSize);
        
            List list = cr.list();
            
            return list;
        } 
        catch (HibernateException e)
        {
            throw e;
        } 
        finally
        {
            try{HibernateUtil.closeSession(session);}catch (Exception e){}
        }
    
    }
and this is the mapping of FoodProvider:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="true">
   <class name="hr.klopa.domain.FoodProvider" table="k_foodprovider">
      <id name="id">
         <column name="k_id" not-null="true" />
         <generator class="native" />
      </id>
      <property name="name">
         <column name="k_name" length="255" not-null="false"/>
      </property>
      
      <property name="street">
         <column name="k_street" length="255" not-null="false"/>
      </property>
      
      <property name="workHours">
         <column name="k_workHours" length="255" not-null="false"/>
      </property>
      
      <property name="owner">
         <column name="k_owner" length="255" not-null="false"/>
      </property>
      
      <property name="telephoneForOrders">
         <column name="k_telephoneForOrders" length="255" not-null="false"/>
      </property>
      
      <property name="webAddress">
         <column name="k_webAddress" length="255" not-null="false"/>
      </property>
      
      <set name="menuGroups" table="k_menugroup" cascade="all" order-by="k_id asc">
         <key column="k_foodprovider"/>
         <one-to-many class="hr.klopa.domain.MenuGroup"/>
      </set>
      
      <set name="images" table="k_image" cascade="all" order-by="k_id asc">
         <key column="k_foodprovider"/>
         <one-to-many class="hr.klopa.domain.Image"/>
      </set>
      
      <set name="blocks" table="k_foodprovider_blocks">
         <key column="k_foodprovider"/>
         <many-to-many class="hr.klopa.domain.Block" column="k_block"/>
      </set>
      
      <property name="delivery">
         <column name="k_isdelivery" sql-type="int"/>
      </property>
      
      <property name="restaurant">
         <column name="k_isrestaurant" sql-type="int"/>
      </property>
      
      <property name="catering">
         <column name="k_iscatering" sql-type="int"/>
      </property>
      
      <property name="active">
         <column name="k_isactive" sql-type="int"/>
      </property>
      
      <property name="grade">
         <column name="k_grade"/>
      </property>
      
      <property name="note">
         <column name="k_note" length="1000" not-null="false"/>
      </property>
   </class>
   
</hibernate-mapping>
   
and for MenuGroup
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="true">
   <class name="hr.klopa.domain.MenuGroup" table="k_menugroup">
   
      <id name="id">
         <column name="k_id" not-null="true" />
         <generator class="native" />
      </id>
      
      <property name="title">
         <column name="k_title" length="255" not-null="false"/>
      </property>
      
      <property name="note">
         <column name="k_note" length="1000" not-null="false"/>
      </property>
      
      <many-to-one name="foodCategory" column="k_foodcategory" class="hr.klopa.domain.FoodCategory" not-null="true"/>
      <set name="foodItems" table="k_fooditems" cascade="all" order-by="k_id asc">
         <key column="k_menugroup"/>
         <one-to-many class="hr.klopa.domain.FoodItem"/>
      </set>
      
      <many-to-one name="foodProvider" column="k_foodprovider" class="hr.klopa.domain.FoodProvider" not-null="false"/>
      
      <property name="number">
         <column name="k_number" not-null="false"/>
      </property>
      
      <property name="priceTitle">
         <column name="k_pricetitle" length="255" not-null="false"/>
      </property>
      
      <property name="price2Title">
         <column name="k_price2title" length="255" not-null="false"/>
      </property>
      
      <property name="price3Title">
         <column name="k_price3title" length="255" not-null="false"/>
      </property>
   
   </class>
   
</hibernate-mapping>