SQL para CRITERIA dinâmica

1 resposta
C

Boa tarde.

Estou com dificuldade na utilização dinâmica de CRITERIA.

Tenho um consulta SQL, exemplo abaixo, mas ñ ainda consegui transformá-la num CRITERIA dinâmica.

Alguém tem um ideia de como transformá-la?

select * from tabela tab1 where id in 
   (select max(id) from tabela tab2 where tab1.nome = tab2.nome);

Estou utilizando Hibernante/SPring 3 e JPA 2.

Muito obrigado.
[]'s
t++

1 Resposta

L

Amigo não entendi muito bem a sua pergunta, mas segue um exemplo de um metodo que pesquisa em qualquer tabela em qualquer campo.
Isto para campos string com a clausula ilike.

Método:

public List<Object> filtroNomeGenerico(Class classe, String stringDePesquisa, String nomeCampoTabela)
			throws Exception {
		sessao = null;
		ArrayList<Object> lista;
		try {

			sessao = HibernateUtil.getSessionFactory().openSession();
			Criteria criteria = sessao.createCriteria(classe);
			criteria.add(Restrictions.ilike(nomeCampoTabela, "%" + stringDePesquisa + "%"));
			lista = (ArrayList<Object>) criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();

		} catch (Exception e) {
			lista = null;
		} finally {
			sessao.close();
		}
		return lista;
	}

Teste Método:

try {
			for (Object objeto : new ClienteDAO().filtroNomeGenerico(Cliente.class, "AMANDA", "nome")) {
				Cliente cliente = (Cliente) objeto;
				System.out.println("Nome...: " + cliente.getNome());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
Criado 9 de março de 2012
Ultima resposta 13 de mar. de 2012
Respostas 1
Participantes 2