Exemplo one-to-many (hibernate)

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>

&lt;class name=&quot;hiber.Filho&quot; table=&quot;filho&quot; &gt;
	&lt;id name=&quot;id_filho&quot; type=&quot;long&quot; &gt;
		&lt;generator class=&quot;increment&quot;/&gt;
	&lt;/id&gt;

	&lt;property name=&quot;dt_nasc&quot;  type=&quot;java.util.Date&quot;   not-null=&quot;true&quot;/&gt;
	&lt;property name=&quot;name&quot; 	  type=&quot;java.lang.String&quot; not-null=&quot;true&quot;/&gt;
	&lt;many-to-one name=&quot;id_pai&quot; class=&quot;hiber.Pai&quot; column=&quot;id_pai&quot; /&gt;		

&lt;/class&gt;

</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&#40;&#41;
&#123;	&#125;

public Filho&#40; Long id_filho, Long id_pai, Date dt_nasc, String name, Pai pai&#41; 
&#123;
	this.dt_nasc 	= dt_nasc;
	this.id_filho 	= id_filho;
	this.id_pai 	= id_pai;
	this.dt_nasc 	= dt_nasc;
	this.pai		= pai;
&#125;

public void setDt_nasc&#40;Date sVal&#41; 	&#123; dt_nasc = sVal; &#125;
public void setId_filho&#40;Long sVal&#41; 	&#123; id_filho = sVal; &#125;
public void setId_pai&#40;Long sVal&#41; 	&#123; id_pai = sVal; &#125;
public void setName&#40;String sVal&#41;  	&#123; name = sVal; &#125;
public void setPai&#40;Pai sVal&#41;  		&#123; pai = sVal; &#125;

public Date getDt_nasc&#40;&#41; 	&#123; return dt_nasc; &#125;
public Long getId_filho&#40;&#41; 	&#123; return id_filho;&#125;
public Long getId_pai&#40;&#41; 	&#123; return id_pai;&#125;
public String getName&#40;&#41;  	&#123; return name;&#125;
public Pai getPai&#40;&#41;  		&#123; return pai;&#125;

}[/code]

Mapeamento da tabela pai:

[code]<hibernate-mapping>

&lt;class name=&quot;hiber.Pai&quot; table=&quot;pai&quot; &gt;
	&lt;id name=&quot;id_pai&quot; type=&quot;long&quot;&gt;
		&lt;generator class=&quot;increment&quot;/&gt;
	&lt;/id&gt;

	&lt;property name=&quot;Dt_nasc&quot; not-null=&quot;true&quot; type=&quot;java.util.Date&quot;/&gt;
	&lt;property name=&quot;name&quot; not-null=&quot;true&quot; type=&quot;java.lang.String&quot;/&gt;

	&lt;set name=&quot;filhos&quot; lazy=&quot;true&quot; inverse=&quot;true&quot; cascade=&quot;all-delete-orphan&quot;&gt;
	        &lt;key column=&quot;id_pai&quot; /&gt;
	        &lt;one-to-many class=&quot;hiber.Filho&quot; /&gt;
	&lt;/set&gt;

	
&lt;/class&gt;

</hibernate-mapping>[/code]

Classe pai:

package hiber;

import java.util.*;  
 
public class Pai &#123;
	
	private Long 	id_pai;
	private String  name;
	private Date 	dt_nasc;
	private Set 	filhos;
	
	public Pai&#40;&#41;
	&#123;	&#125;

	public Pai&#40; Long id_pai, Date dt_nasc, String name,  Set filhos &#41; 
	&#123;
		this.id_pai = id_pai;
		this.name = name;
		this.dt_nasc = dt_nasc; 
		this.filhos = filhos; 
	&#125;
	
	public Long getId_pai&#40;&#41; 			&#123; return this.id_pai; 	&#125;
	public Date getDt_nasc&#40;&#41; 			&#123; return this.dt_nasc; 	&#125;
	public String getName&#40;&#41; 			&#123; return this.name; 	&#125;
	public Set getFilhos&#40;&#41;				&#123; return this.filhos;	&#125;
	
	
	public void addFilhos&#40;Filho filho&#41;
	&#123;
		filho.setPai&#40;this&#41;;
		this.filhos.add&#40;filho&#41;;
	&#125;
	
	public void setId_pai&#40;Long id_pai&#41; 		&#123; this.id_pai = id_pai; 	&#125;
	public void setDt_nasc&#40;Date dt_nasc&#41;	&#123; this.dt_nasc = dt_nasc; 	&#125;
	public void setName&#40;String name&#41; 		&#123; this.name = name; 		&#125;
	public void setFilhos&#40;Set filhos&#41; 		&#123; this.filhos = filhos; 	&#125;
	
&#125;

[quote=“victorpinto”]

Ele da uma exception num casting que eu nao descobri aonde eh. [/quote]

Victor,

sugiro q vc descubra onde aconteceu o erro pra depois analisá-lo…

Fallow.

O erro de casting rola no session.find . Aind anao descobri pq, mas quando coloca um find mais simples do tipo (from Pai), ele nao da erro. E o que falta pra dar certo a inclusao eh no mapeamento do filho :
Ao inves disso:

Deve-se colocar no name o campo na tabela filho que representa o pai, no nosso caso :

Fazendo essas alterações o exemplo funciona perfeitamente.

Certo.

O q seria um session.find() não-simples para vc? Não entendi…

assim ele nao estava funcionando

e se colocar assim ele funciona:

Acho q tah dando erro de casting pq vc colocou entre aspas (“1”)… ele
entende como String…

Tente tirar as aspas…