private List<?> findByDate(Session session,
        String propertyName,
        Date date,
        String sortByPropertyName) throws InvalidHibernateSessionException,
        InvalidCriterionException,
        InvalidCriterionValueException,
        InvalidSortByPropertyException,
        DAOException {
        if(session == null) {
            throw new InvalidHibernateSessionException("La session Hibernate ne peut être null");
        }
        if(propertyName == null) {
            throw new InvalidCriterionException("La propriété à utiliser ne peut être null");
        }
        if(date == null) {
            throw new InvalidCriterionValueException("La date à trouver ne peut être null");
        }
        if(sortByPropertyName == null) {
            throw new InvalidSortByPropertyException("La propriété utilisée pour classer ne peut être null");
        }
        try {
            List<?> results = Collections.EMPTY_LIST;
            final Criteria criteria = session.createCriteria(getDtoClass());
            criteria.add(Restrictions.between(propertyName,
                BibliothequeDate.getStartDate(date),
                BibliothequeDate.getEndDate(date)));
            criteria.addOrder(Order.asc(sortByPropertyName));
            results = criteria.list();
            return results;
        } catch(HibernateException hibernateException) {
            throw new DAOException(hibernateException);
        }
    }