Spring + Hibernate (Estou perdido)

Antes quando utilizava somente o Hibernate, fazia o seguinte:

Para pesquisar pelo nome:

[code]//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 cargos = q.list();

    return cargos;[/code]

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?

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});