Senhores,
Meu problema eh o seguinte:
Tenho uma classe Projeto e uma classe Ocorrencia(e tabelas relacionadas).
Um projeto vem varias ocorrencias.
No momento do cadastro do projeto,gostaria de cadastrar tb uma ou mais ocorrencias logo de cara,mas somente o projeto esta sendo salvo.
Eis os codigos dos mapeamentos:
Projeto.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="geosystem.intranet.vo.Projeto">
<id column="id" name="id" type="int"/>
<property column="id_geo" generated="never" lazy="false" name="id_geo" type="string"/>
<property column="diretoria" name="diretoria" type="string"/>
<property column="cliente" name="cliente" type="string"/>
<property column="status" name="status" type="string"/>
<property column="responsavel_geo" name="responsavel_geo" type="string"/>
<property column="responsavel_cliente" name="responsavel_cliente" type="string"/>
<property column="doc_inicial" name="doc_inicial" type="string"/>
<bag name="ocorrencias" table="ocorrencia" lazy="true" inverse="true" cascade="delete">
<key column="id_projeto"/>
<one-to-many class="geosystem.intranet.vo.Ocorrencia"/>
</bag>
</class>
</hibernate-mapping>
Ocorrencia.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="geosystem.intranet.vo.Ocorrencia">
<id column="id" name="id" type="int"/>
<property column="data" name="data" type="string"/>
<property column="descricao" name="descricao" type="string"/>
<many-to-one name="projeto" class="geosystem.intranet.vo.Projeto" cascade="none"
outer-join="auto"
update="true"
insert="true"
column="id_projeto"/>
</class>
</hibernate-mapping>
Codigo de teste:
public class TestaHibernate {
public static void main(String[]args){
Projeto p = new Projeto();
p.setCliente("bla");
p.setDiretoria("bla");
p.setDoc_inicial("bla");
p.setId_geo("bla");
p.setResponsavel_cliente("bla");
p.setResponsavel_geo("bla");
p.setStatus("bla");
Ocorrencia o = new Ocorrencia();
o.setData("26/02/2007");
o.setDescricao("bla");
p.getOcorrencias().add(o);
ProjetoDAO.salvaProjeto(p);
}
}
E finalmento o metodo salvaProjeto:
public static void salvaProjeto(Projeto p){
SessionFactory sf = new Configuration().configure("/geosystem/intranet/config/hibernate.cfg.xml").buildSessionFactory();
Session s = sf.openSession();
Transaction tx = s.beginTransaction();
s.save(p);
tx.commit();
s.close();
}
A questao eh saber pq ocorrencia nao esta sendo salva.
Um abraço à todos.