public class ExemplosCriteria<T> {
protected Class<T> persistentClass;
protected Session session;
public ExemplosCriteria(Session session, Class<T> persistentClass){
this.session = session;
this.persistentClass = persistentClass;
}
/** Retorna todos os registros da tabela com ordenação */
@SuppressWarnings("unchecked")
public List<T>findAll(String fieldOrder){
Criteria c = this.session.createCriteria(persistentClass);
c.addOrder(Order.asc(fieldOrder));
return c.list();
}
/** Pesquisa de acordo com o campo e valor fornecido. retorna somente um objeto */
@SuppressWarnings("unchecked")
public T loadByField(String field, String value){
Criteria c = this.session.createCriteria(persistentClass);
c.add(Restrictions.eq(field, value));
T t = (T) c.uniqueResult();
return t;
}
/** Pesquisa de acordo com campo, valor (em qualquer posição do campo), ordena, e limita resultado */
@SuppressWarnings("unchecked")
public List<T> findByNameAnyWhere(String fieldName, String fieldValue,String fieldOrder, Integer maxResults){
Criteria c = this.session.createCriteria(persistentClass);
c.add(Restrictions.ilike(fieldName, fieldValue,MatchMode.ANYWHERE));
c.addOrder(Order.asc(fieldOrder));
if (maxResults != null) {
c.setMaxResults(maxResults);
}
return c.list();
}
/** Semelhante ao exemplo acima, porém, faz join em outras "tabelas/objetos" */
@SuppressWarnings("unchecked")
public List<T> findByNameAnyWhereJoin(String fieldName, String fieldValue,String fieldOrder, Integer maxResults){
Criteria c = session.createCriteria(NotaFiscal.class, "nota");
c.createAlias("nota.itens", "item",CriteriaSpecification.LEFT_JOIN);
c.createAlias("item.usuario", "usuario",CriteriaSpecification.LEFT_JOIN);
c.createAlias("usuario.unidadeOperacional", "unidade",CriteriaSpecification.LEFT_JOIN);
c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
c.addOrder(Order.asc(fieldOrder));
Integer numero = Integer.parseInt(fieldValue);
c.add(Restrictions.eq(fieldName, numero));
return c.list();
}
/** OR/AND no criteria */
@SuppressWarnings("unchecked")
public List<Usuario> getChamadosAbertosUsuario(Usuario usuario){
Criteria c = session.createCriteria(Usuario.class);
Criterion c1 = Restrictions.eq("status", "A");
Criterion c2 = Restrictions.eq("status", "C");
c.add(Restrictions.or(c1, c2));
c.add(Restrictions.eq("usuario", usuario));
c.addOrder(Order.desc("id"));
return c.list();
}
/** Criteria com cache de query ativado */
@SuppressWarnings("unchecked")
public List<View_Vencimentos> getVencimetosDoCliente(Integer matrizId){
Criteria c = session.createCriteria(View_Vencimentos.class);
c.add(Restrictions.eq("id_matriz", matrizId));
c.addOrder(Order.asc("vencimento"));
c.setCacheable(true);
c.setCacheMode(CacheMode.NORMAL);
return c.list();
}
}
quarta-feira, 20 de outubro de 2010
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário