Erro Hibernate

Olá, estou usando o hibernate pela primeira vez, sendo que esta dando esse erro. Alguem saberia me dizer o que pode ser?

INFO: Not binding factory to JNDI, no JNDI name configured Jul 30, 2013 7:16:41 PM org.hibernate.type.NullableType nullSafeSet INFO: could not bind value 'Classes.Departamento@192a441' to parameter: 1; Classes.Departamento cannot be cast to java.lang.Integer Exception in thread "main" java.lang.ClassCastException: Classes.Departamento cannot be cast to java.lang.Integer at org.hibernate.type.IntegerType.set(IntegerType.java:41)

Obrigado,

Isto é falha de conversão de tipo.

você está tentando converter algum valor para Integer que não pode ser realizado.

posta o código da classe Departamento.

Morfando um objeto Departamento para Integer em 3, 2, 1… Exception in thread “main” java.lang.ClassCastException, #fail.

Segue o código da Classe Departamento. Essa classe foi gerada a partir da tabela Departamento, conforme figura em anexo.

[code]
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity(name=“Departamento”)
public class Departamento implements java.io.Serializable {

 @Id
 @GeneratedValue
 private Integer id;
 private String nomDep;

public Departamento() {
}
public Departamento(String nomDep) {
   this.nomDep = nomDep;
}  
public Integer getId() {
    return this.id;
}    
public void setId(Integer id) {
    this.id = id;
}
public String getNomDep() {
    return this.nomDep;
}    
public void setNomDep(String nomDep) {
    this.nomDep = nomDep;
}

}[/code]

Se concentre na exceção: Classes.Departamento cannot be cast to java.lang.Integer

Veja que você está tentando inserir em uma variável do tipo Integer um objeto Departamento. O que você precisa aqui é pegar o id do departamento para inserir e não o objeto Departamento. Use o método getId() de departamento para inserir o valor do id na variável Integer .

Olá, desde já obrigado pela atenção.

Abaixo esta minha classe principal onde fiz alguns exemplo. Acredito que o problema esta nas linhas 13 e 17, ou seja, f1.setDepartamentoId(d1); e f2.setDepartamentoId(d2);
O campo DepartamentoI é pra ser a chave estrangeira no banco, ou seja, é pra gravar o ID do Departamento desse funcionario. Segundo a orientação que esta no link abaixo, para referenciar a chave estrangeria seria simplesmente apontar o objeto.

Esta correto isso?

https://www.youtube.com/watch?v=FvNc1tNLd7o

[code]
public static void main(String[] args) {
Departamento d1= new Departamento();
Departamento d2= new Departamento();

    d1.setNomDep("Compras");
    d2.setNomDep("Vendas");
    
    Funcionario f1=new Funcionario();
    Funcionario f2=new Funcionario();
    
    f1.setCpf("99999999999");
    f1.setNome("JOAO DA SILVA");
    f1.setDepartamentoId(d1);
    
    f2.setCpf("888888888888");
    f2.setNome("MARIA APARECIDA");
    f2.setDepartamentoId(d2);
    
    Session s= HibernateUtil.getSessionFactory().getCurrentSession();
    s.beginTransaction();
    s.save(d1);
    s.save(d2);
    s.save(f1);
    s.save(f2);
    s.getTransaction().commit();
}

}[/code]

Posta a sua classe Funcionario, preciso saber como você declarou departamento nela.

Segue abaixo a Classe Funcionario.
Obrigado.

[code]
package Classes;
// Generated 30/07/2013 18:30:59 by Hibernate Tools 3.2.1.GA

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

@Entity(name=“Funcionario”)
public class Funcionario implements java.io.Serializable {
@Id
@GeneratedValue
private Integer id;
private Departamento departamentoId;
private String cpf;
private String nome;
public Funcionario() {
}
public Funcionario(Departamento departamentoId) {
this.departamentoId = departamentoId;
}
public Funcionario(Departamento departamentoId, String cpf, String nome) {
this.departamentoId = departamentoId;
this.cpf = cpf;
this.nome = nome;
}
public Integer getId() {
return this.id;
}
public void setId(Integer id) {
this.id = id;
}
public Departamento getDepartamentoId() {
return this.departamentoId;
}

public void setDepartamentoId(Departamento departamentoId) {
    this.departamentoId = departamentoId;
}
public String getCpf() {
    return this.cpf;
}

public void setCpf(String cpf) {
    this.cpf = cpf;
}
public String getNome() {
    return this.nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

}[/code]

brother,se tu está aprendendo com esse video ai,uma dica que eu te passo é baixar a apostila fj-28 e seguir ela,flw

[quote=ezem.rs]

[code]

    f2.setDepartamentoId(d2);

[/code][/quote]

Num é porque você está setando objeto de departamento no id funcionario que é inteiro não?

poderia fazer

acho que é isso né …

@Entity(name="Funcionario")  
public class Funcionario  implements java.io.Serializable {  
     @Id  
     @GeneratedValue  
     private Integer id;  
     private Departamento departamentoId; 
//.... 

Já tinha tocado nesse assunto, se você tem um objeto Departamento, não pode setar um Integer. Tem que setar um objeto departamento.
E outra coisa, se departamento é uma objeto que representa uma relacionamento 1-n, mapeia ele como tal.

@Entity(name="Funcionario")  
public class Funcionario  implements java.io.Serializable {  
     @Id  
     @GeneratedValue  
     private Integer id; 
     @ManyToOne
     @JoinColumn(name = "FK_ID_DEPARTAMENTO")
     private Departamento departamentoId;