Na minha query a baixo, o retorno dela esta sendo uma lista de objects, como eu faço para que me retorne uma lista de PerfilBiometrico? Ou então depois que ele me retornar a lista de objects como eu faço para fazer um cast para PerfilBiometrico?
publicList<PerfilBiometrico>ListPerfilBiometrico(Clientecliente)throwsException{// TODO Auto-generated method stubList<PerfilBiometrico>perfisBiometricos=null;StringBuffersb=newStringBuffer();sb.append("select pb.ic_dedoausente,pb.nu_qualidadetemplate,pb.bi_template,pb.co_cliente_fk,pb.co_tipodedo_fk ");sb.append("from siabmtb003_perfilbiometrico as pb, ");sb.append("siabmtb001_cliente as c where pb.co_cliente_fk = c.co_cliente_pk ");sb.append("AND c.co_nis = :nis");this.query=this.entityManager.createNativeQuery(sb.toString());this.query.setParameter("nis",cliente.getNis());try{perfisBiometricos=this.query.getResultList();System.out.println(perfisBiometricos);}catch(Exceptione){// TODO: handle exceptione.getStackTrace();this.logger.warning("Perfil n�o encontrado");}returnperfisBiometricos;}
Detalhe, os campos do seu select deverá ter a mesma ordem dos atributos de PerfilBiometrico.java. Dessa forma vc terá um select Nativo convertido para uma lista de Objetos Especifico.
Do jeito que o amigo acima falou também funciona, mas voce teria que criar um construtor na sua entidade com todos os campos da sua classe.
ViniGodoy
Só um outro detalhe, que não tem muito a ver com a dúvida.
É recomendável usar StringBuilder no lugar do StringBuffer. O StringBuilder não é sincronizado, o que pode gerar uma performance melhor.
Quando você tiver só strings estáticas, você pode usar concatenação pura e simples:
String sql = "select pb.ic_dedoausente,pb.nu_qualidadetemplate,pb.bi_template,pb.co_cliente_fk,pb.co_tipodedo_fk " +
"from siabmtb003_perfilbiometrico as pb, " +
"siabmtb001_cliente as c where pb.co_cliente_fk = c.co_cliente_pk " +
"AND c.co_nis = :nis";
M
malbarbosa
Tentei tudo q vcs falaram ai…um não dá certo o outro continua dando o mesmo erro e fabiozoroastro, o pb que vc coloca no seu exemplo vem de onde?
tem algo mais que posso tentar? Ah…estou usando JPA.
desde já obrigado pela ajuda!
M
malbarbosa
o que estou tentando entender também e não consegui ainda é o porque de quando eu faço:
essa query me retorna null, sendo que no banco existe dados na tabela PerfilBiometrico
alguém sabe o pq?
fabiozoroastro
Uai, [b]pb[/n] é o alias da sua tabela que você mesmo definiu.
Se a hql “from PerfilBiometrico” não está trazendo nada(E realmente existem registros), pode ser algum problema com a sua fábrica. =)
Dê uma olhada aí nas configurações.
M
malbarbosa
Pessoal fiz diferente e pelo que realmente eu preciso essa forma fica certa…só que tem um problema, ela está me retornando uma lista de objects, como eu faria para ela me trazer uma lista do que eu realmente eu preciso?
List<PerfilBiometrico>perfilBiometrico=null;Stringsql="select max (pb.nu_qualidadetemplate), "+"pb.co_tipodedo_fk from siabmtb003_perfilbiometrico as pb, "+"siabmtb001_cliente as c where c.co_nis = :nis AND pb.co_cliente_fk = c.co_cliente_pk "+"group by (pb.co_tipodedo_fk);";this.query=this.entityManager.createNativeQuery(sql);this.query.setParameter("nis",cliente.getNis());try{//this.query.setMaxResults(1);perfilBiometrico=this.query.getResultList();}catch(Exceptione){// TODO: handle exception}
tiagomm
Companheiro,
Envie por favor o mapeamento da classe PerfilBiometrico assim como seu persistence.xml para melhorar a analise.