Consulta SQL não retonar o campo String Completo

6 respostas
dymitrios

Boa tarde!

Estou usando IDE NetBeans + Hibernate.

Quando efetuo a consulta abaixo deveria pegar a string 35, mas sempre vem 3. se eu mudo o valor da string no banco sempre vem somente o 1º caractere.
Alguém sabe como fazer para pegar o resultado completo.

public String pegaTipoConsulta(){
         session =CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         List retorno = session.createSQLQuery("Select consultas.TipoConsulta as TipoConsulta from Consultas where Consultas.Codigo = :id").setInteger("id", id1).list();
        // Object retorno = session.createSQLQuery("SELECT consultas.TipoConsulta as TipoConsulta FROM Consultas,resultado_consultas where Consultas.Codigo=resultado_consultas.CodigoResu").setFirstResult(1).setMaxResults(1).uniqueResult();
         Object i=retorno.get(0);
         
         String tipo = i.toString();
        
         System.out.println("Impresso a lista="+retorno);
 
         return tipo;
     }

6 Respostas

romarcio

Se vc está criando uma lista como resultado da consulta, faça um for para recupera-lá, dai vai dar certo.

Outra coisa, se usa hibernate, tenta usar HQL e não SQL.

Seria algo assim:

Query retorno = session.createQuery("from Consulta where codigo = :id");
		retorno.setParameter("codigo", id1);
		List<Conculta> consultas = retorno.list();
                for (Consulta c : consultas) {
                       c.getTipoConsulta(); 
                }

Dai vc trabalha com os objetos da classe Consulta e não com colunas da tabela.

dymitrios

Vou tentar dessa forma que você postou…

romarcio

Faz o for somente no resultado, não na consulta:

for(int i = 0; i < retorno.size(); i++){  
      retorno.get(i);
dymitrios

Exception in thread “Thread-0” org.hibernate.QueryParameterException: could not locate named parameter [codigo]

O erro que aparece. Já tentei colocar Consultas.codigo e nada…

dymitrios
public String pegaTipoConsulta(){
         session =CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
        Query retorno = session.createQuery("from Consultas where Codigo = :id").setInteger("id",id1);
               List<Consultas> consultas = retorno.list();
               for (Consultas c : consultas) {
                      c.getTipoConsulta();
               }
         
         
         // List retorno = session.createSQLQuery("Select consultas.TipoConsulta as TipoConsulta from Consultas where Consultas.Codigo = :id").setInteger("id", id1).list();
        
        // Object retorno = session.createSQLQuery("SELECT consultas.TipoConsulta as TipoConsulta FROM Consultas,resultado_consultas where Consultas.Codigo=resultado_consultas.CodigoResu").setFirstResult(1).setMaxResults(1).uniqueResult();
         
        // Object i=retorno.get(0);
         
         //String tipo = i.toString();
        
         System.out.println("Impresso a lista="+retorno);
 
         return retorno.toString();
     }
Fiz dessa forma mas só trás a própria consulta =
Impresso a lista=QueryImpl(from Consultas where Codigo = :id)
dymitrios

Valeu Romarcio... mais uma que você me ajuda...

Aqui se resolveu certinho...
public String pegaTipoConsulta(){
         session =CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
        Query retorno = session.createQuery("from Consultas where Codigo = :id").setInteger("id",id1);
               List<Consultas> consultas = retorno.list();
               for (Consultas c : consultas) {
                    tipo=  c.getTipoConsulta();
               }
         
         
  
        
         System.out.println("Impresso a lista="+tipo);
 
         return tipo.toString();
     }
Criado 24 de setembro de 2010
Ultima resposta 24 de set. de 2010
Respostas 6
Participantes 2