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

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

[code] Categoria categoria = new Categoria();
categoria.setId(Long.valueOf(“50”));

	Session s = HibernateSessionFactory.getSession();
	
	Transaction tx = s.beginTransaction();
	s.delete(categoria);
	tx.commit();
	
	s.close();

[/code]

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)

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

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.

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

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

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á.

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.