*/
private DetachedCriteria mountCriteriaForFindByAttributes(T entity, final String sortField, final Boolean sortOrder) {
DetachedCriteria criteria = DetachedCriteria.forClass(getPersistentClass());
SessionFactory sessionFactory = ht.getSessionFactory();
ClassMetadata meta = sessionFactory.getClassMetadata(getPersistentClass());
String[] propertyNames = meta.getPropertyNames();
Type[] propertyTypes = meta.getPropertyTypes();
Object[] propertyValues = meta.getPropertyValues(entity, EntityMode.POJO);
/*
* Adicionando o atributo identificador único(id) caso o mesmo tenha
* sido informado e exista um atributo chave.
*/
if (entity.getId() != null && meta.getIdentifierPropertyName()!=null) {
criteria.add(Restrictions.eq(meta.getIdentifierPropertyName(), entity.getId()));
}
/*
* Varrendo todos os atributos da entidade. Como na listagem não consta
* o atributo identificador único(id), este foi observado na rotina anterior.