Erro com Consulta no hibernate![RESOLVIDO]

5 respostas
andre_bento

Olá pessoal...
Estou passando uma raiva danada com uma consulta simples aqui no Hibernate.
É o seguinte, preciso buscar o cara dentro do BD com base no seu ID, então fiz o seguinte

public List<Clientes> getClient(String pk) throws Exception{
          
       Integer pk2 = Integer.parseInt(pk);
        Session session = getSession();
        Transaction t = session.beginTransaction();
        Criteria select = session.createCriteria(Clientes.class);
        select.add(
                    Restrictions.like("id",pk2));
        
        List<Clientes> clientsList = select.list();
        JOptionPane.showMessageDialog(null,clientsList.get(0).getNome());
        t.commit();
        session.close();
       
        return clientsList;
    }

Meu campo id no banco é do tipo Integer...
Então fiz essa consulta, mas o hibernate me volta um erro dizendo que não foi possível executar a query...
Tentei deixar como string a variável pk2 mas mesmo assim não vai, dizendo que não é possível fazer o cast de String para Integer...
Não consigo imaginar o que pode estar errado com essa consulta...
Por favor, me ajudem pessoal!

5 Respostas

A

posta o log do erro completo.

t+

andre_bento

org.hibernate.Exception.SQLGrammarException: could not execute query

27/10/2011 14:00:31 org.hibernate.util.JDBCExceptionReporter logExceptions
AVISO: SQL Error: 0, SQLState: 42883
27/10/2011 14:00:31 org.hibernate.util.JDBCExceptionReporter logExceptions
GRAVE: ERRO: operador não existe: integer ~~ integer

é isso amigão que vc pediu?
Qualquer coisa fala aqui que eu mando denovo

A

cara,

faz o seguinte,
troque

Restrictions.like

por

Restrictions.eq

e passei como parametro integer.

ve se resolve.

t+

andre_bento

Poooooo amigão…
Brigadão cara, funcionou!!!
Eu sou iniciante com o hibernate e não sei muito a diferença entre esses restrictions…
Mas muito obrigado amigo…
RESOLVIDO

CharlesAlves

Tenta fazer assim,

//como você está utilizando o pk não precisa retornar uma lista
    public Clientes getClient(String pk) throws Exception{  
          // em vez de Integer tenta transformar pra int memso
           int pk2 = Integer.parseInt(pk);
           Session session = getSession();  
           //Em vez de usar transaction e criteria fica mais fácil fazer somente assim
           Cliente cliente = session.load(Cliente.class, pk2);
           JOptionPane.showMessageDialog(null,cliente.getNome());  
           session.close();  
            
           return cliente;  
       }
Criado 27 de outubro de 2011
Ultima resposta 27 de out. de 2011
Respostas 5
Participantes 3