Erro ao consultar dados com hibernate

2 respostas
R

Boa noite

Quero que seja retornado todas as linhas do meu banco mysql atraves da classe CarregaProduto, quando tento fazer isso recebo o erro:

Exception in thread "main" org.hibernate.TypeMismatchException: Provided id of the wrong type for class br.com.caelum.hibernate.Produto. Expected: class java.lang.Long, got class java.lang.Integer
	at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:135)
	at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:1090)
	at org.hibernate.impl.SessionImpl.load(SessionImpl.java:985)
	at org.hibernate.impl.SessionImpl.load(SessionImpl.java:978)
	at br.com.caelum.hibernate.CarregaProduto.main(CarregaProduto.java:20)
package br.com.caelum.hibernate;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class CarregaProduto {
	public static void main(String[] args) {

		Configuration configuration = new Configuration();
		configuration.addAnnotatedClass(Produto.class);

		SessionFactory sessionFactory = configuration.buildSessionFactory();
		Session session = sessionFactory.openSession();

		Produto produto = (Produto)session.load(Produto.class, 3 );
		
		System.out.println(produto.getNome());
		
		session.close();

	}
}
Tenho a classe produto:
package br.com.caelum.hibernate;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Produto {

	@Id
	@GeneratedValue
	private Long id;
	private String nome;
	private String descricao;
	private double preco;
	
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public double getPreco() {
		return preco;
	}
	public void setPreco(double preco) {
		this.preco = preco;
	}
	

}

Podem me dizer onde esta o erro ?

Desde ja agradeço a todos

2 Respostas

O

dá uma olhada em sua busta.
Seu id é Long e não inteiro.
Quando você coloca um valor por padrão ele coloca como inteiro assim como tiver um número fracionado ele considera como float.
Assim você coloca o sufixo do tipo desejado como você quer um long ficaria assim:

Produto produto = (Produto)session.load(Produto.class, 3l );

Um ele após o número inteiro ou etão

Produto produto = (Produto)session.load(Produto.class, new Long(3) );

Espero ter ajudado

R

otaviojava
ajudo sim, deu certo.

Tem como eu trazer todas as linhas da minha tabela com esse codigo ?

Produto produto = (Produto)session.load(Produto.class, <alguma sintaxe q traz tudo> );
Criado 11 de junho de 2011
Ultima resposta 11 de jun. de 2011
Respostas 2
Participantes 2