Como apagar informações de duas tabelas ao mesmo tempo usando Hibernate?

2 respostas
vanzella

Ola pessoal, um exemplo bem simples, tenho duas tabelas com relacionamento 1:1:

Pessoa

<?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="beans.Pessoa" table="TB01_PESSOA">

		<id name="codgPessoa" column="ID_PESSOA">
			<generator class="increment"/>
		</id>
	
		<property name="nomePessoa" column="NOME_PESSOA"/>
		<property name="numeroCpfPessoa" column="NUMR_CPF_PESSOA"/>
		
		<one-to-one	
			name="celular" 
			class="beans.Celular"
			cascade="save-update"/>
	</class>
</hibernate-mapping>

e Celular

<?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="beans.Celular" table="TB02_CELULAR">
	
		<id name="codgCelular"
			column="ID_CELULAR">
			<generator class="foreign">
				<param name="property">pessoa</param>	
			</generator>			
		</id>
	
		<property name="descricaoCelular" column="DESCRICAO"/>
		<property name="marcaCelular" column="MARCA"/>
		
		<one-to-one 
			name="pessoa" 
			class="beans.Pessoa"
			constrained="true"/>
	</class>
</hibernate-mapping>

No meu codigo Java estou usando session.delete(pessoa); pra apagar.
O que eu queria é que quando eu apagar uma pessoa, apagasse tbm o celular.

já tentei tudo que é cascade, como faço isso?

2 Respostas

renandemelo

Tenta acrescentar o all-delete-orphan no seu cascade, procure na documentação do Hibernate para mais informações

vanzella

Aff, descobri, apos algumas horas analisando melhor rsrs. um erro meio que grotesco. Eu estava usando cascade de forma correta, o unico problema é que na hora de apagar eu nao carregava(populava) os objetos com session.load();

O erro acontecia porque eu estava querendo apagar somente com o codigo identificador(id) de um objeto.
Tipo pessoa.setCodgPessoa(new Long(1));

Valeu…

Criado 17 de janeiro de 2007
Ultima resposta 17 de jan. de 2007
Respostas 2
Participantes 2