Hibernate Criteria - Como fazer conjunção (ex. select.... where condicao1 OR condicao2 )

5 respostas
L

Hibernate Criteria - Como fazer conjunção (ex. select… where condicao1 OR condicao2 )

exemplo:
tipo Empresa.class

select * from tabela_empresa where id=1 or id=2;

pra uma condicao eu uso

criteria.add( Expression.eq(“id”,1) );

e pra conjuncao?

5 Respostas

Marky.Vasconcelos

Se não me engano é assim

criteria.add(Restrictions.or(Expression.eq("id",1),Expression.eq("id",2));
L

tipo…

funcionou…

mas eu preciso fazer a pesquisa com um array de inteiros de tamanho variável!

:smiley:

renandemelo

Cara,

Porque você não tenta usar o “IN”, para sair algo do tipo

Não sei pq não me lembro direito, mas se eu não me engano, o Expression.in aceita uma coleção de valores

Collection<Long> idsEmpresas = ...;
criteria.add(Expression.in("id",idsEmpresas));

Tente ai!
Flw,
Renan

L

blz… RESOLVIDO! Obrigado!

Integer[] ids = new Integer[]{1,2,3,4};
criteria.add( Expression.in("id", ids)  );
V

Caro amigo Mark_Ameba

Gostaria de uma ajuda:

Tenho que fazer uma consulta para retornar um list de pedidos, onde os mesmos terão que ser de uma determinada regiao. Sendo que o cidadao que está logado omente podera ver esses pedidos da mesma regiao, acho que é algo parecido como exemplo abaixo:

public List getLista(String mat, String id_regiao) throws SQLException {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();

List ListaPed;

String hql = select * from pedido where id_regiao=:id_regiao and mat=:mat;

//String hql = “select * from pedido where id_regiao=? and mat=?”;

Query q = session.createQuery(hql);

q.setParameter(id_regiao, id_regiao).list();

q.setParameter(mat, mat);

ListaPed = q.list();

session.getTransaction().commit();

return ListaPed;

}

Este exemplo é o Dao.

Agradeço a ajuda

Criado 17 de dezembro de 2007
Ultima resposta 19 de mai. de 2010
Respostas 5
Participantes 4