[Hibernate]: PropertyValueException: not-null property no delete

6 respostas
passos

Estou tentando deletar um registro no hibernate usando Session.delete passando um objeto apenas com o seu id populado conforme diz o javadoc porem minha classe tem not-null no seu mapeamento e o hibernate esta reclamando. Alguem ja passou por esse tipo de problema?

Hibernate-Version: 3.0.final

HBM
&lt?xml version="1.0"?&gt
<!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.teste.model.Categoria" table="CATEGORIA" select-before-update="true">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="12" scale="0" />
            <generator class="sequence">
            	<param name="sequence">SQ_CATEGORIA</param>
            </generator>
        </id>
        <property name="nome" type="java.lang.String">
            <column name="NOME" length="100" not-null="true" />
        </property>
        <set name="produtos" inverse="true">
            <key column="CATEGORIA_ID" />
            <one-to-many class="br.com.teste.model.Produto" />
        </set>
    </class>
</hibernate-mapping>
App
Categoria categoria = new Categoria();
		categoria.setId(Long.valueOf("50"));
		
		Session s = HibernateSessionFactory.getSession();
		
		Transaction tx = s.beginTransaction();
		s.delete(categoria);
		tx.commit();
		
		s.close();
Exception
org.hibernate.PropertyValueException: not-null property references a null or transient value: br.com.teste.model.Categoria.nome
	at org.hibernate.engine.Nullability.checkNullability(Nullability.java:72)

6 Respostas

trgpwild

Cara vc conseguiu resolver este problema?
Se sim, COMO?

rpffoz

Desculpe o OFF-Topic, mas alguém achou uma solução?

Sem ter que remover os not-null dos hbm, ou popular um objeto com todos os atributos not-null.

robertwgil

Tambem estou a espera de alguma alma caridosa que desvende esse mistério! :lol:

thiagogmenezes

Bom cara já passei por um problema parecido com o seu e fiz o seguinte: chamei o método load() da session antes de remover o objeto… acho q no seu caso ficaria mais ou menos assim:

Categoria categoria = new Categoria();  
categoria.setId(Long.valueOf("50"));  
   
Session s = HibernateSessionFactory.getSession();  
   
Transaction tx = s.beginTransaction();
 
categoria = session.load(Categoria.class,categoria.getId());

s.delete(categoria);  
tx.commit();  
   
s.close();

bom cara… só incluir essa linha:

[color=red]categoria = session.load(Categoria.class,categoria.getId());[/color]

acredito que assim funcione…

espero ter ajudado

abraço

D

Se não me falha a memória, este assunto existe no blog da caelum:

Só não lembro onde e dei uma procurada por cima e também não achei. Mas sei que vi lá a algum tempo já.

themage

Bom. Tb passei por esse mesmo problema. No meu caso era o atributo no banco q tava permitindo null.
Coloquei Not Null igual a True no atributo da tabela do banco e funcionou.

Criado 18 de outubro de 2006
Ultima resposta 11 de abr. de 2008
Respostas 6
Participantes 7