Erro ao salvar objeto no hibernate

4 respostas
F

Boa tarde, Pessoal.
To pegando um erro tosco que não consigo resolver no hibernate.
Tenho 2 classes mapeada no hibernate lançando exception quando tento salvar o objeto.

org.hibernate.PropertyValueException: not-null property references a null or transient value: br.com.Farol.carro.

Mapeamento das classes.

Carro.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="br.com.Carro" table="Carro" >
        <id name="idCarro" type="integer">
            <column name="ID_CARRO" precision="7" scale="0" />
            <generator class="sequence">
                <param name="sequence">SEQ_CARRO</param>
            </generator>
        </id>
        <property name="marca" type="java.lang.String">
            <column name="MARCA" length="10" not-null="true" />
        </property>
        </property>
                <set name="farol" inverse="true" lazy="true" table="FAROL" fetch="select" cascade="all"  >
            <key>
                <column name="ID_FAROL" precision="7" scale="0" not-null="true" />
            </key>
            <one-to-many class="br.com.Farol" />
        </set>
    </class>
</hibernate-mapping>
Farol
<?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="br.com.Farol" table="FAROL">
        <id name="idFarol" type="int">
            <column name="ID_FAROL" precision="7" scale="0" />
            <generator class="sequence">
                <param name="sequence">SEQ_FAROL</param>
            </generator>
        </id>
        <many-to-one name="carro" class="br.com.Carro" fetch="select" >
            <column name="ID_CARRO" precision="7" scale="0" not-null="true"/>
        </many-to-one>
    </class>
</hibernate-mapping>
Erro acontece quando salvo o objeto. Tipo
Carro carro = new Carro();
carro.getFarol().add(new Farol());
session.save(carro); <---- erro aqui
Quando salvo o carro e o farol separados funciona, mas queria que tudo seja salvo de uma so vez. Obrigado e t+

4 Respostas

F

Acredito que vou ter que salvar o carro primeiro e passa este objeto para o Farol e depois salvar, certo.
E o cascade não funciona…

F

up!!!

F

:frowning: uma alma bondosa que possa me ajudar!!!

F

Ahhh muleke! Resolvi o erro. Não ficou a coisa mas linda mas já é uma solução.
Como tenho uma relação bidirecional. Fiz o seguinte:

Carro carro = new Carro(); Farol farol = new Farol(); farol.setCarro(carro); carro.getFarol().add(farol); session.save(carro);
E pronto! em um salve resolvo a gravação do pai e do filho.
8)

Criado 26 de outubro de 2009
Ultima resposta 28 de out. de 2009
Respostas 4
Participantes 1