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
[code] public List 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;
}[/code]
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!
posta o log do erro completo.
t+
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
cara,
faz o seguinte,
troque
Restrictions.like
por
Restrictions.eq
e passei como parametro integer.
ve se resolve.
t+
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
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;
}