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)
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 .
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();
@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;