Hibernate relacionamentos com valor null

1 resposta
Maycom_Santos

Exite uma maneira de os relacionamentos many-to-one do hibernate aceitar inclusão mesmo que nenhum valor seja atribuído?
Já tentei colocar not-null=“false” mas nada. Quando mando fazer a inclusão, dá o seguinte erro:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: negocio.comuns.comercial.SubgrupocustoVO

Segue o mapeamento da minha classe.

<class name="negocio.comuns.comercial.CustoVO" table="custo">
    <id column="codigo" name="codigo" type="integer">
      <generator class="increment"/>
    </id>
    <property name="ano"/>
    <property name="datalancamento" type="timestamp"/>
    <property name="cnpjempresa"/>
    <property name="total">
      <formula>
                (select sum(item.valorplanejado)
                from itemcusto item
                where item.codcusto = codigo)
      </formula>
    </property>
    <property name="totalanual">
      <formula>
                (select sum(item.valorplanejado)
                from itemcusto item
                inner join custo cus
                on(item.codcusto = cus.codigo )
                where cus.ano = ano
                and cus.cnpjempresa = cnpjempresa)
      </formula>
    </property>
    
    <many-to-one class="negocio.comuns.basico.MesesVO" column="codmes" lazy="false" name="codmes"/>
    <bag lazy="false" name="itemCustoVOs" order-by="codsubsubgrupocusto" table="itemcusto">
      <key column="codCusto"/>
      <composite-element class="negocio.comuns.comercial.ItemCustoVO">
        <many-to-one class="negocio.comuns.comercial.GrupocustoVO" column="codgrupocusto" lazy="false" name="codgrupocusto"/>
        <many-to-one class="negocio.comuns.comercial.SubgrupocustoVO" column="codsubgrupocusto" lazy="false" name="codsubgrupocusto"/>
        <many-to-one class="negocio.comuns.comercial.SubsubgrupocustoVO" column="codsubsubgrupocusto" lazy="false" name="codsubsubgrupocusto"/>
        <property name="valorplanejado"  column="valorplanejado"  type="double"  />
        <property name="valoracontecido" column="valoracontecido" type="double"  />
      </composite-element>
    </bag>
  </class>

Ajudem por favor

1 Resposta

Mero_Aprendiz

Maycom Santos:
Exite uma maneira de os relacionamentos many-to-one do hibernate aceitar inclusão mesmo que nenhum valor seja atribuído?
Já tentei colocar not-null=“false” mas nada. Quando mando fazer a inclusão, dá o seguinte erro:
org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing: negocio.comuns.comercial.SubgrupocustoVO

Segue o mapeamento da minha classe.

<class name="negocio.comuns.comercial.CustoVO" table="custo">
    <id column="codigo" name="codigo" type="integer">
      <generator class="increment"/>
    </id>
    <property name="ano"/>
    <property name="datalancamento" type="timestamp"/>
    <property name="cnpjempresa"/>
    <property name="total">
      <formula>
                (select sum(item.valorplanejado)
                from itemcusto item
                where item.codcusto = codigo)
      </formula>
    </property>
    <property name="totalanual">
      <formula>
                (select sum(item.valorplanejado)
                from itemcusto item
                inner join custo cus
                on(item.codcusto = cus.codigo )
                where cus.ano = ano
                and cus.cnpjempresa = cnpjempresa)
      </formula>
    </property>
    
    <many-to-one class="negocio.comuns.basico.MesesVO" column="codmes" lazy="false" name="codmes"/>
    <bag lazy="false" name="itemCustoVOs" order-by="codsubsubgrupocusto" table="itemcusto">
      <key column="codCusto"/>
      <composite-element class="negocio.comuns.comercial.ItemCustoVO">
        <many-to-one class="negocio.comuns.comercial.GrupocustoVO" column="codgrupocusto" lazy="false" name="codgrupocusto"/>
        <many-to-one class="negocio.comuns.comercial.SubgrupocustoVO" column="codsubgrupocusto" lazy="false" name="codsubgrupocusto"/>
        <many-to-one class="negocio.comuns.comercial.SubsubgrupocustoVO" column="codsubsubgrupocusto" lazy="false" name="codsubsubgrupocusto"/>
        <property name="valorplanejado"  column="valorplanejado"  type="double"  />
        <property name="valoracontecido" column="valoracontecido" type="double"  />
      </composite-element>
    </bag>
  </class>

Ajudem por favor

Olá Maycom Santos.
O que deve estar acontecendo é que no momento que você esta salvando o objeto, existe um objeto do tipo SubgrupocustoVO sem nenhuma informação.
Verifique com o Debug se no momento que você salva o objeto a referência para o SubgrupocustoVO realmente está nula.

[]'
JL

Criado 17 de fevereiro de 2010
Ultima resposta 17 de fev. de 2010
Respostas 1
Participantes 2