Estou fazendo um projeto com eclipse/mysql/hibernate. Quando eu rodo o programa ele grava os dados da tabela funcionario, embora a bonificacao não grave, eis o código:
public static void main(String[] args) {
Configuration cfg = new Configuration();
cfg.configure();
SessionFactory sessionFactory = cfg.buildSessionFactory();
Session session = sessionFactory.openSession();
try
{
DateFormat dt = DateFormat.getDateInstance(DateFormat.SHORT);
Date novaData = dt.parse("01/10/2078");
Funcionario f = new Funcionario();
f.setNome("Marcio 8");
f.setMatricula(1111);
f.setAdmissao(novaData);
f.setRamal(12);
BonificacaoAnual bonus2003 = new BonificacaoAnual();
bonus2003.setAno(2003);
bonus2003.setValor(10.0);
session.save(f);
bonus2003.setFuncionario(f);
f.addBonificacao(bonus2003);
session.save(bonus2003);
System.out.println("id func: " + f.getId());
System.out.println("bonus: " + bonus2003);
}catch(Exception ex)
{
System.out.println(ex.getMessage());
}
session.close();
sessionFactory.close();
}
ocorre o seguinte erro:
19:29:56,984 DEBUG AbstractSaveEventListener:240 - executing insertions
19:29:56,984 DEBUG AbstractSaveEventListener:289 - executing identity-insert immediately
19:29:56,984 DEBUG AbstractEntityPersister:2094 - Inserting entity: my.model.BonificacaoAnual (native id)
19:29:56,984 DEBUG AbstractBatcher:358 - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
19:29:56,984 DEBUG SQL:393 - insert into bonificacaoanual (ano, valor) values (?, ?)
19:29:56,984 DEBUG AbstractBatcher:476 - preparing statement
19:29:57,000 DEBUG AbstractEntityPersister:1942 - Dehydrating entity: [my.model.BonificacaoAnual#<null>]
19:29:57,000 INFO BigDecimalType:87 - could not bind value '10.0' to parameter: 2; java.lang.Double
19:29:57,000 DEBUG AbstractBatcher:366 - about to close PreparedStatement (open PreparedStatements: 1, globally: 1)
19:29:57,000 DEBUG AbstractBatcher:525 - closing statement
java.lang.Double
19:29:57,000 DEBUG SessionImpl:273 - closing session
codigo da bonificacao anual:
package my.model;
public class BonificacaoAnual {
private Long id;
private int ano;
private double valor;
private Funcionario funcionario;
public boolean equals(Object o) {
return funcionario.equals(o);
}
public int hashCode() {
return funcionario.hashCode();
}
public int getAno() {
return ano;
}
public void setAno(int ano) {
this.ano = ano;
}
public double getValor() {
return valor;
}
public void setValor(double valor) {
this.valor = valor;
}
public Funcionario getFuncionario() {
return funcionario;
}
public void setFuncionario(Funcionario funcionario) {
this.funcionario = funcionario;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
codigo da funcionario
package my.model;
import java.util.Collection;
import java.util.Date;
public class Funcionario {
private Integer id;
private String nome;
private int ramal;
private int matricula;
private Date admissao;
private Collection bonificacoes;
public boolean addBonificacao(BonificacaoAnual ba){
if(getBonificacoes()==null) return false;
if(! this.equals(ba.getFuncionario())){
if(ba.getFuncionario()!=null){
ba.getFuncionario().getBonificacoes().remove(ba);
}
ba.setFuncionario(this);
}
return getBonificacoes().add(ba);
}
public boolean equals(Object o){
if (this == o) return true;
if (o == null) return false;
if(!(o instanceof Funcionario)) return false;
Funcionario that = (Funcionario) o;
return this.getMatricula() == that.getMatricula();
}
public int hashCode(){
return this.getMatricula();
}
public Date getAdmissao() {
return admissao;
}
public void setAdmissao(Date admissao) {
this.admissao = admissao;
}
public Collection getBonificacoes() {
return bonificacoes;
}
public void setBonificacoes(Collection bonificacoes) {
this.bonificacoes = bonificacoes;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public int getMatricula() {
return matricula;
}
public void setMatricula(int matricula) {
this.matricula = matricula;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public int getRamal() {
return ramal;
}
public void setRamal(int ramal) {
this.ramal = ramal;
}
}