Pq esse codigo nao da certo quando eu tento fazer um
pai.addFilhos(filhos);
session.save(pai);
Ele da uma exception num casting que eu nao descobri aonde eh. O atributo Pai da classe filho tem que ser mapeada tb? Segue os codigos:
Mapeamento da tabela Filho:
[code]<hibernate-mapping>
<class name="hiber.Filho" table="filho" >
<id name="id_filho" type="long" >
<generator class="increment"/>
</id>
<property name="dt_nasc" type="java.util.Date" not-null="true"/>
<property name="name" type="java.lang.String" not-null="true"/>
<many-to-one name="id_pai" class="hiber.Pai" column="id_pai" />
</class>
</hibernate-mapping>[/code]
Classe filho:
[code]import java.util.Date;
public class Filho {
private Long id_filho;
private Long id_pai;
private String name;
private Date dt_nasc;
private Pai pai;
public Filho()
{ }
public Filho( Long id_filho, Long id_pai, Date dt_nasc, String name, Pai pai)
{
this.dt_nasc = dt_nasc;
this.id_filho = id_filho;
this.id_pai = id_pai;
this.dt_nasc = dt_nasc;
this.pai = pai;
}
public void setDt_nasc(Date sVal) { dt_nasc = sVal; }
public void setId_filho(Long sVal) { id_filho = sVal; }
public void setId_pai(Long sVal) { id_pai = sVal; }
public void setName(String sVal) { name = sVal; }
public void setPai(Pai sVal) { pai = sVal; }
public Date getDt_nasc() { return dt_nasc; }
public Long getId_filho() { return id_filho;}
public Long getId_pai() { return id_pai;}
public String getName() { return name;}
public Pai getPai() { return pai;}
}[/code]
Mapeamento da tabela pai:
[code]<hibernate-mapping>
<class name="hiber.Pai" table="pai" >
<id name="id_pai" type="long">
<generator class="increment"/>
</id>
<property name="Dt_nasc" not-null="true" type="java.util.Date"/>
<property name="name" not-null="true" type="java.lang.String"/>
<set name="filhos" lazy="true" inverse="true" cascade="all-delete-orphan">
<key column="id_pai" />
<one-to-many class="hiber.Filho" />
</set>
</class>
</hibernate-mapping>[/code]
Classe pai:
package hiber;
import java.util.*;
public class Pai {
private Long id_pai;
private String name;
private Date dt_nasc;
private Set filhos;
public Pai()
{ }
public Pai( Long id_pai, Date dt_nasc, String name, Set filhos )
{
this.id_pai = id_pai;
this.name = name;
this.dt_nasc = dt_nasc;
this.filhos = filhos;
}
public Long getId_pai() { return this.id_pai; }
public Date getDt_nasc() { return this.dt_nasc; }
public String getName() { return this.name; }
public Set getFilhos() { return this.filhos; }
public void addFilhos(Filho filho)
{
filho.setPai(this);
this.filhos.add(filho);
}
public void setId_pai(Long id_pai) { this.id_pai = id_pai; }
public void setDt_nasc(Date dt_nasc) { this.dt_nasc = dt_nasc; }
public void setName(String name) { this.name = name; }
public void setFilhos(Set filhos) { this.filhos = filhos; }
}