Problema com Select que não retorna todos os caracteres da consulta

17 respostas
dymitrios

Boa tarde a todos!

Fiz uma consulta para retornar o valor tipoConsulta, onde tem gravado a String “15”, mas no resultado da consulta no NetBeans somente aparece “1”.
Quando faço a mesma consulta no Workbench vem certo o “15”.

Por favor alguém sabe o que está acontecendo???

Código da consulta:

public String pegaTipoConsulta(){
         session =CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();

         List retorno = session.createSQLQuery("SELECT MAX(consultas.TipoConsulta) as TipoConsulta FROM Consultas,resultado_consultas where Consultas.Codigo=resultado_consultas.CodigoResu").list();

         Object i=retorno.get(0);      
         String tipo = i.toString();
         System.out.println("Impresso a lista="+retorno);// está imprimindo o valor "1" ao invés de "15" que está gravado na tabela
 
         return tipo;
     }

TipoConsulta é varchar, lenght=2.

Desde já agradeço!

17 Respostas

lelodois

Use…

  • Lembre-se que o count retorna um Objeto do tipo Long
dymitrios

Coloquei dessa forma mas continua aparecendo somente "1". só o 1º caractere

public String pegaTipoConsulta(){
         session =CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         Object retorno = session.createSQLQuery("SELECT MAX(consultas.TipoConsulta) as TipoConsulta FROM Consultas,resultado_consultas where Consultas.Codigo=resultado_consultas.CodigoResu").uniqueResult();
         //Object i=retorno.get(0);
         String tipo = retorno.toString();
         System.out.println("Impresso a lista="+retorno);
 
         return tipo;
     }
lelodois

[quote=dymitrios]Fiz isso e apareceu esse erro

Long retorno = (Long) session.createSQLQuery("SELECT ").uniqueResult();

  • Lembre-se que o count retorna um Objeto do tipo Long
dymitrios

Da forma como vc falou também dá erro:

Exception in thread "Thread-0" java.lang.ClassCastException: java.lang.Character cannot be cast to java.lang.Long
Ae fiz dessa forma: Mas ainda só retorna o "1".
public String pegaTipoConsulta(){
         session =CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         Object retorno = session.createSQLQuery("SELECT MAX(consultas.TipoConsulta) as TipoConsulta FROM Consultas,resultado_consultas where Consultas.Codigo=resultado_consultas.CodigoResu").uniqueResult();
         //Object i=retorno.get(0);
         String tipo = retorno.toString();
         System.out.println("Impresso a lista="+retorno);
 
         return tipo;
     }
lelodois
dymitrios:
Da forma como vc falou também dá erro:
Exception in thread "Thread-0" java.lang.ClassCastException: java.lang.Character cannot be cast to java.lang.Long
Ae fiz dessa forma: Mas ainda só retorna o "1".
public String pegaTipoConsulta(){
         session =CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
         Object retorno = session.createSQLQuery("SELECT MAX(consultas.TipoConsulta) as TipoConsulta FROM Consultas,resultado_consultas where Consultas.Codigo=resultado_consultas.CodigoResu").uniqueResult();
         //Object i=retorno.get(0);
         String tipo = retorno.toString();
         System.out.println("Impresso a lista="+retorno);
 
         return tipo;
     }

Um....

Estranho, ele não deveria trazer um tipo character.

Você não pode fazer o max por um id?

MAX(consultas.id)

Confesso que nunca vi fazer max por varchar.
:)

dymitrios

rsss eu quero pegar o ultimo resultado do tipoconsulta.
Mas mesmo assim eu tentei sem o MAX no começo e continuou da mesma forma.
o engraçado é que no Workbench vem certinho do jeito que eu quero…

lelodois

dymitrios:
rsss eu quero pegar o ultimo resultado do tipoconsulta.
Mas mesmo assim eu tentei sem o MAX no começo e continuou da mesma forma.
o engraçado é que no Workbench vem certinho do jeito que eu quero…

Então deixa que o hibernate faz o max para vc…

use

Object uniqueResult = session.createSQLQuery("Select tipoConsulta From...").setFirstResult(1).setMaxResults(1).uniqueResult();

:slight_smile:

dymitrios

Fiz assim. gostei. mas ainda assim o resultado é “1”.

Já pesquizei de tudo quanto é jeito… não entendo porque está trazendo somente o caractere 1!

lelodois

dymitrios:
Fiz assim. gostei. mas ainda assim o resultado é “1”.

Já pesquizei de tudo quanto é jeito… não entendo porque está trazendo somente o caractere 1!

Estranho…

Não sei oq pode ser, qual é o seu ambiente (o que dá certo e o que dá errado).

dymitrios

Perdão não entendi a pergunta… :shock:

lelodois

lelodois:
dymitrios:
Fiz assim. gostei. mas ainda assim o resultado é “1”.

Já pesquizei de tudo quanto é jeito… não entendo porque está trazendo somente o caractere 1!

Estranho…

Não sei oq pode ser, qual é o seu ambiente (o que dá certo e o que dá errado).

O que vc está usando?
Framework, ide, banco, camiseta…

dymitrios

kkkkkkkkk

Então estou usando o NetBeans 5.9 e trabalhando somente nele junto com Hibernate.

Tenho outra consulta onde eu tinha que pegar o ID e pegou normalmente. somente essa consulta que ta dificil.

dymitrios

Olha o que eu preciso fazer.

Eu insiro os dados na tabela Consultas:
ID gera automatico
TipoConsultas eu insiro

Preciso pegar esses dados inseridos na tabela Consultas e colocar na tabela resultado_consultas.
E essas duas tabelas não tem relacionamento algum.

Ae tenho uma DAO que inseri a tabela Consultas. e outra DAO que faz a inserção do ID gerado na Consultas e TipoConsultas.
Se souber alguma outra forma mais fácil de fazer isso agradeço.
Pois o ID já pego corretamente e coloco na resultado_consultas.
Mas o TipoConsultas está ocorrendo isso. ao invés de pegar "15" está pegando "1".

DAOconsultas
package credserver.DAOS;





import hibernate.Consultas;
import hibernate.CredTudoHibernateUtil;


import java.util.List;


import org.hibernate.Session;


/**
 *
 * @author Stwart
 */
public class DAOconsultas {
    private Session session;
    
    
    
    public DAOconsultas(){

    }

   
    public void salvar(Consultas consultas) throws Exception{
       session = CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
     /*  Transaction transaction = (Transaction) session.beginTransaction();*/
        session.beginTransaction();

           session.save(consultas);
           session.getTransaction().commit();
         //  session.flush();
         //  session.close();

    }
    public List listar(){
        session = CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        List l1 = session.createQuery("from Consultas").list();

        session.getTransaction().commit();
        return l1;


    }



}
DAOresultado_consultas
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package credserver.DAOS;

import hibernate.CredTudoHibernateUtil;
import hibernate.ResultadoConsultas;
import java.awt.Event;
import java.util.List;
import org.hibernate.Session;

/**
 *
 * @author Stwart
 */
public class DAOresultadoConsultas {


    private Session session;
    private int id1;

    public void salvar(ResultadoConsultas resultadoconsultas) throws Exception{
       session = CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
     /*  Transaction transaction = (Transaction) session.beginTransaction();*/
        session.beginTransaction();

           session.save(resultadoconsultas);
           session.getTransaction().commit();
//           session.flush();
//           session.close();

    }
    public List listar(){
        session = CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        List l1 = session.createQuery("from ResultadoConsultas").list();

        session.getTransaction().commit();
        return l1;


    }

     public int pegaid(){
   session = CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
   session.beginTransaction();
    List retorno =  session.createSQLQuery("SELECT MAX(Codigo) AS Codigo FROM Consultas ").list();

    session.getTransaction().commit();
        Object i=  retorno.get(0);
    
    
  String id = i.toString();
    id1=Integer.parseInt(id) ;
    //session.close();
    //System.out.println("ID="+id);
   return id1;
}
     public String pegaTipoConsulta(){
         session =CredTudoHibernateUtil.getSessionFactory().getCurrentSession();
         session.beginTransaction();
  
         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 = retorno.toString();
         System.out.println("Impresso a lista="+retorno);
 
         return tipo;
     }



}
dymitrios

Alguém sabe porque isso está acontecendo???

dymitrios

Alguém?

lelodois

Nossa velhinho…
estou com o mesmo problema, o hibernate transformes está convertendo uma string “palavra” em character ‘p’…
como vc resolveu?

Abraços

lelodois

E aí, resolveu?

Criado 1 de setembro de 2010
Ultima resposta 18 de mai. de 2011
Respostas 17
Participantes 2