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+