Spring + Hibernate (Estou perdido)

1 resposta
R

Antes quando utilizava somente o Hibernate, fazia o seguinte:

Para pesquisar pelo nome:

//cria a query da consulta
        Query q = session.createQuery("from Cargo c where c.nome like :nome");
        //seta o parametro da consulta
        q.setParameter("nome", "%" + nome + "%");
        //joga o resultado da consulta dentro de uma lista
        List<Cargo> cargos = q.list();

        return cargos;

Só que agora comecei a utilizar o Spring com o Hibernate, já consegui fazer para salvar,editar e deletar, só não consegui ainda as pesquisas.Estou utilizando o HibernateTemplate e vi que tem vários métodos de pesquisa findByExample,findByNamedQuery,entre outros.Só que não entendi bem qual usar já testei vários mas não consegui ainda.

@SuppressWarnings("unchecked")
	public List<PlanoConta> findByExample(String desc){
		List<PlanoConta> findByExample = getHibernateTemplate().findByNamedQuery("from PlanoConta p where p.descricao like:desc");
		return findByExample;
	}

Estou testando assim ^ só que não sei como seto o parâmetro, ou se tem uma maneira melhor.

Explicar a situação: Tenho um formulario para pesquisar pode pesquisar por descrição e tipo (filtro na pesquisa), só que ele pode pesquisar só pelo tipo ou só pela descrição.Como faço isso?

1 Resposta

V

Ola…

  1. Utilize “?” para os parametros
  2. findByNamedQuery - Utilizado para namedQuery, voce deve colocar o nome da named query escrita no hbm por exemplo. Se quiser escrever a HQL utilize o metodo “find” no lugar de findByNamedQuery.
//para um parametro
List&lt;PlanoConta&gt; findByExample = getHibernateTemplate().find("from PlanoConta p where p.descricao like ?", myParamValue);

//para varios parametros
List&lt;PlanoConta&gt; findByExample = getHibernateTemplate().find("from PlanoConta p where p.descricao = ? and p.outroCampo = ?", new Object[] {par1, par2});
Criado 3 de janeiro de 2009
Ultima resposta 3 de jan. de 2009
Respostas 1
Participantes 2