Consultando dados no hibernate

Boa tarde… estou cm um problema na hora de fazer uma consulta no banco pelo numero do id do objeto…

Quando eu faço a consulta com string funciona direitinho… mas quando tento fazer a consulta pelo id nao funciona e da esse erro aki…


SEVERE: ERROR: operator does not exist: integer ~~ integer
  Dica: No operator matches the given name and argument type(s). You might need to add explicit type casts.
  Posição: 357
Exception in thread "AWT-EventQueue-0" org.hibernate.exception.SQLGrammarException: could not execute query
  
Caused by: org.postgresql.util.PSQLException: ERROR: operator does not exist: integer ~~ integer
  Dica: No operator matches the given name and argument type(s). You might need to add explicit type casts.
  Posição: 357

o codigo da minha classe ComputadorDAO esta dessa forma…


public Computador buscar(int cod) throws SQLException {
        Computador c = null;
        if (cod != 0) {
            Query q = sessao.createQuery("from Computador c where c.id_computador" +
                    " like :id");
            q.setInteger("id", cod);
            c = (Computador) q.uniqueResult();
            if (c == null) {
                JOptionPane.showMessageDialog(null, "Computador nao Cadastrado");
            }
        } else {
            JOptionPane.showMessageDialog(null, "Informe o codigo do Produto");
        }
        sessao.close();
        return c;

    }// fim do metodo obter............

e a chamada ao metodo esta dessa forma…

private void btnBuscarActionPerformed(java.awt.event.ActionEvent evt) {                                          

        //primeiro eu entro com caixa pra pessoa dar entrada no codigo do produto.....
 
        int cod = Integer.parseInt(JOptionPane.showInputDialog("Entre com o codigo do produto : "));
        
        
        ComputadorDAO cdao = new ComputadorDAO();
        Computador c = new Computador();

        try {
            // chamada ao metodo buscar......           
            c = cdao.buscar(cod);

           
    }

tipo na boa
issoa qui

Query q = sessao.createQuery("from Computador c where c.id_computador" + 
" like :id"); 

ta errado nao existe like para comparação de integer… se os 2 fossem strings vc podia usar o like
no seu caso…
tira esse like e coloca um =

Query q = sessao.createQuery("from Computador c where c.id_computador" + 
" = :id"); 

deve funcionar

deixa eu explicar melhor

quando vc faz esse tipo de pesquisa os tipos dos objetos contam no seu caso atual
quando o hibernate tenta rodar a query ele pega os seguintes caras

c.id_computador = integer
:id = integer

ai tipo

integer like integer

isso nao existe…

se fosse

c.nome_computador like :nome

e

c.nome_computador = String
:nome = String

ai sim

String like String…

isso existe saco?

Pow… cara… é verdade… nem pensei nisso… pq nao me do muito bem com banco de dados…

Valeu pela ajuda …

Eu to desenvolvendo um programa pra uma loja de informatica e de vez enquando tenho essas duvidas… entao
se qlqr pessoa puder me add no msn… pra tirar as duvidas mas rapido eu agradeceria… rafael_ctork@hotmail.com

Valeu galera…