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 .
ezem.rs
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.
publicstaticvoidmain(String[]args){Departamentod1=newDepartamento();Departamentod2=newDepartamento();d1.setNomDep("Compras");d2.setNomDep("Vendas");Funcionariof1=newFuncionario();Funcionariof2=newFuncionario();f1.setCpf("[telefone removido]");f1.setNome("JOAO DA SILVA");f1.setDepartamentoId(d1);f2.setCpf("888888888888");f2.setNome("MARIA APARECIDA");f2.setDepartamentoId(d2);Sessions=HibernateUtil.getSessionFactory().getCurrentSession();s.beginTransaction();s.save(d1);s.save(d2);s.save(f1);s.save(f2);s.getTransaction().commit();}}
romarcio
Posta a sua classe Funcionario, preciso saber como você declarou departamento nela.
ezem.rs
Segue abaixo a Classe Funcionario.
Obrigado.
packageClasses;// Generated 30/07/2013 18:30:59 by Hibernate Tools 3.2.1.GAimportjavax.persistence.Entity;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.OneToOne;@Entity(name="Funcionario")publicclassFuncionarioimplementsjava.io.Serializable{@Id@GeneratedValueprivateIntegerid;privateDepartamentodepartamentoId;privateStringcpf;privateStringnome;publicFuncionario(){}publicFuncionario(DepartamentodepartamentoId){this.departamentoId=departamentoId;}publicFuncionario(DepartamentodepartamentoId,Stringcpf,Stringnome){this.departamentoId=departamentoId;this.cpf=cpf;this.nome=nome;}publicIntegergetId(){returnthis.id;}publicvoidsetId(Integerid){this.id=id;}publicDepartamentogetDepartamentoId(){returnthis.departamentoId;}publicvoidsetDepartamentoId(DepartamentodepartamentoId){this.departamentoId=departamentoId;}publicStringgetCpf(){returnthis.cpf;}publicvoidsetCpf(Stringcpf){this.cpf=cpf;}publicStringgetNome(){returnthis.nome;}publicvoidsetNome(Stringnome){this.nome=nome;}}
S
Slow17
brother,se tu está aprendendo com esse video ai,uma dica que eu te passo é baixar a apostila fj-28 e seguir ela,flw
S
Slow17
ezem.rs:
f2.setDepartamentoId(d2);
Num é porque você está setando objeto de departamento no id funcionario que é inteiro não?
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.