createQuery com Hibernate?

Galera, seguinte…Preciso fazer 2 SELECT no BD com parametros: 1 select por codigo e o outro por nome.

estou tentando fazer assim:

//aqui tento fazer a consulta, mas não me retorna nada...A tabela esta populada de informações.
public void consultaPerfilPorCodigo(){
        DefaultTableModel tabela = (DefaultTableModel)gridPerfil.getModel();
        tabela.setNumRows(0);
        Session sessao = new RetornaSessaoHibernate().hibernateSession();
        sessao.beginTransaction();  
        List<Yperfil> perfis = (List<Yperfil>)sessao.createSQLQuery("from Yperfil where id = " + Long.parseLong(codPerfil.getText())).list();
        for(Yperfil perfil : perfis){
            tabela.addRow(new Object[]{ 
                new FormataCodigos().retornaCodigoFormatado(perfil.getId()),
                perfil.getPerfil(),
                perfil.getObservacao(),
            });
        }        
    }

Não estou conseguindo fazer a consulta, como seria pra fazer isso ???
E outra pergunta é como fazer isso sem usar concatenação ???

obrigado

select p from Pessoa where id = :id and nome like :nome


//numa classe utils

public static String quote(String nome){
          return "%" + nome + "%";
}

testa ai

Opa, consegui resolver em partes.

Fiz assim

//esta funcionando
        DefaultTableModel tabela = (DefaultTableModel)gridPerfil.getModel();
        tabela.setNumRows(0);
        Session sessao = new RetornaSessaoHibernate().hibernateSession();
        sessao.beginTransaction();  
        List<Yperfil> perfis = (List<Yperfil>)sessao.createQuery("from Yperfil as perfil where perfil.id = " + Long.parseLong(codPerfil.getText())).list();
        for(Yperfil perfil : perfis){
            tabela.addRow(new Object[]{ 
                new FormataCodigos().retornaCodigoFormatado(perfil.getId()),
                perfil.getPerfil(),
                perfil.getObservacao(),
            });
        }

Como eu faço isso sem usar concatenação e sem ter que criar uma classe para retorno ??? Eu vi um esquema de usar createQuery com parameters, porém naum consegui fazer.

Aqui o exemplo que vi: http://www.mkyong.com/hibernate/hibernate-query-examples-hql/ .Mas não consegui faze-lo, eu instanciando a query ela não me traz o metodos setParameters().

Alguma sugestão ???

obrigado.

Opaaaaa…Consegui resolver.

public void consultaPorDescricaoPerfil(){
        DefaultTableModel tabela = (DefaultTableModel)gridPerfil.getModel();
        tabela.setNumRows(0);
        Session sessao = new RetornaSessaoHibernate().hibernateSession();
        sessao.beginTransaction();  
        Query query = sessao.createQuery("from Yperfil as p where p.perfil like :descricao");
        query.setParameter("descricao", "%"+descPerfil.getText()+"%");
        List<Yperfil> perfis = query.list();
        for(Yperfil perfil : perfis){
            tabela.addRow(new Object[]{ 
                new FormataCodigos().retornaCodigoFormatado(perfil.getId()),
                perfil.getPerfil(),
                perfil.getObservacao(),
            });
        }        
    }

100% FUNCIONAL…KKK !!!

t+++ e vlw.

o método createQuery retorna um objeto Query, ao qual você está chamando o método list. Antes de chamar esse método list você pode pegar esse objeto Query e usar algum dos setters dele (setString, setInt, etc) para setar parâmetros, semelhante ao PreparedStatement do jdbc. Os parâmetros ao invés de “?” você pode usar “:nome”, e ai no setter você pode usar o indice do parâmetro ou o nome.

Opa maior_abandonado…Obrigado, eu ja havia resolvido, mas acho q o tempo de eu responder q havia resolvido foi o tempo de vc postar…kkk !!!
Mas blz, obrigado msm assim.

t+