package com.opentravelsoft.providers.hibernate.vacation; import java.util.List; import org.hibernate.criterion.CriteriaSpecification; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Repository; import com.opentravelsoft.entity.vacation.Hotel; import com.opentravelsoft.providers.HotelDao; import com.opentravelsoft.providers.hibernate.GenericDaoHibernate; import com.opentravelsoft.util.StringUtil; @Repository("HotelDao") public class HotelDaoImpl extends GenericDaoHibernate<Hotel, String> implements HotelDao { public HotelDaoImpl() { super(Hotel.class); } @SuppressWarnings("unchecked") @Override public List<Hotel> getHotels(String countryNo, String provinceNo, String cityNo, String hotelName) { DetachedCriteria criteria = DetachedCriteria.forClass(Hotel.class); criteria.add(Restrictions.like("hotJc", hotelName)); if (StringUtil.hasLength(cityNo)) criteria.add(Restrictions.eq("city.citycd", cityNo)); else if (StringUtil.hasLength(provinceNo)) criteria.add(Restrictions.eq("city.province.code", provinceNo)); else if (StringUtil.hasLength(countryNo)) criteria.add(Restrictions.eq("city.country.countrycd", countryNo)); criteria.addOrder(Order.asc("citynm")); criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY); return getHibernateTemplate().findByCriteria(criteria); } }