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

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!

Use…

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

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

[code]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;
 }[/code]

[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

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

Ae fiz dessa forma:
Mas ainda só retorna o “1”.

[code]
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;
 }[/code]

[quote=dymitrios]Da forma como vc falou também dá erro:

Ae fiz dessa forma:
Mas ainda só retorna o “1”.

[code]
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;
 }[/code][/quote]

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.
:slight_smile:

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…

[quote=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…[/quote]

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:

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!

[quote=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!
[/quote]

Estranho…

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

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

[quote=lelodois][quote=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!
[/quote]

Estranho…

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

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

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.

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

[code]
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;
    

    }

}[/code]

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;
     }



}

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

Alguém?

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

Abraços

E aí, resolveu?