Galera estou criando um BD com 2 tabelas só bem simples... tabela Universidade e tabela centro
consigo adicionar, alterar e remover na Universidade mas no centro que é@ManyToOne eu não consigo inserir.
package teste;
import javax.swing.JOptionPane;
import modelo.centro;
import DAO.ProdutoDao;
import modelo.Universidade;
import modelo.centro;
public class AdicaoDeCentro {
public static void main(String[] args) {
centro Centro = criaCentro();
new ProdutoDao().salvaCentro(Centro);
}
private static centro criaCentro()
{
centro centro2 = new centro();
Universidade uni = new ProdutoDao().carregaUniversidade(1);
centro2.setId(2);
centro2.setNome("Copacabana");
centro2.setUniversidade(uni);
return centro2;
}
}
Classe centro
[code]package modelo;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
public class centro {
@Id
@Column (name="id_centro")
private int id;
private String nome;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_universidade", insertable=true, updatable=true)
@Fetch(FetchMode.JOIN)
@Cascade (CascadeType.SAVE_UPDATE)
private Universidade universidade;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setUniversidade(Universidade universidade) {
this.universidade = universidade;
}
public Universidade getUniversidade() {
return universidade;
}
}
Classe Universidade
package modelo;
import java.util.Collection;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
@Entity
public class Universidade {
@Id
@Column (name="id_universidade")
private int id;
private String nome;
@OneToMany (mappedBy="universidade", fetch= FetchType.LAZY)
@Cascade (CascadeType.ALL)
private Collection<centro> centros;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setCentros(Collection<centro> centros) {
this.centros = centros;
}
public Collection<centro> getCentros() {
return centros;
}
}
Exception in thread "main" org.hibernate.TypeMismatchException: Provided id of the wrong type for class modelo.Universidade. Expected: class java.lang.Integer, got class java.lang.Long
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:109)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:906)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:823)
at org.hibernate.impl.SessionImpl.load(SessionImpl.java:816)
at DAO.ProdutoDao.carregaUniversidade(ProdutoDao.java:32)
at teste.AdicaoDeCentro.criaCentro(AdicaoDeCentro.java:33)
at teste.AdicaoDeCentro.main(AdicaoDeCentro.java:17)
Agradeço desde já pela ajuda.