@SuppressWarnings("unchecked")
	protected List<T> findByCriteria(Order ordem, Criterion... criterion) {
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction transaction = session.beginTransaction();

		Criteria crit = session.createCriteria(getPersistentClass()).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
		if (ordem != null) {
			crit.addOrder(ordem);
		}
		for (Criterion c : criterion) {
			crit.add(c);
		}
		List<T> list = crit.list();

		transaction.commit();
		session.close();

		return list;
	}