Cascade não funcionando no HIbernate [RESOLVIDO]

5 respostas
Tiago_Farias

Olá pessoal,

tenho 2 entidades: Participante e Discurso. Um Discurso é feito por um Participante e apenas um. No entanto, quando um participante é removido da lista de participantes(no banco), os discursos aonde ele aparece não são apagados juntos. E eu gostaria q realmente fossem... Bom, essas classes estão assim:

@Table
public class Discurso {

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column
	private long id;
	
	@JoinColumn
        @Cascade({org.hibernate.annotations.CascadeType.DELETE})
        @OneToOne(cascade=CascadeType.ALL)
	private Participante orador;
	
	@Column
	private String parte;
	
	@Column
	private String tema;

//Getters e setters

e a entidade Participante:

@Table
@Entity
public class Participante {

	@Column
	private String nome;
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column
	private long id;
	
	@JoinColumn(name="cargo")
	@OneToOne
	private Cargo cargo;

	
	public Participante() {
		
	}
//getters e setters chatos...

O erro q dá é sempre relativo a ConstraintViolation. Se alguém puder me ajudar, agradeço desde já!

[]s.

5 Respostas

LPJava

bem vamos la, se estiver usando o mysql como está seu bd? ele é do tipo InnoDB?

Lá no banco os actions estao corretos? CASCADE?

flw!

S

Acho q seu relacionamento esta um pouco invertido.
A anotação de cascade deveria esta no participante e nao no discirso,
assim quando vc enviar um participante pra ser excluido o discurso tb sera.

Falou.

Tiago_Farias

LPJava, meu banco é postgres.

SlashJava, bem observado. Mas aí q tah. Um participante não possui um discurso. Um discurso é que possui um orador participante. Ou vc quis dizer pra colocar q um participante possui um ou mais discursos?

LPJava

hm a respeito do postgre nao tenho experiencia com esse bd. E a respeito da modelagem eu acho que um discurso tem participantes. Mas, depende do seu tipo de negocio, pq um participante pode ter muitos discusso, imagine um locutor ele tem varios discussos, nao podemos ter “no ar” varios locutores ao mesmo tempo falando varios discussos concorda?

Tiago_Farias

Opa! Na verdade eu testei agora colocando do jeito q o Slash flw. Participante tem uma lista de discursos e fiz entre eles a relação OneToMany/ManyToOne. Funcionou perfeito!

Vlw!

Criado 20 de fevereiro de 2010
Ultima resposta 21 de fev. de 2010
Respostas 5
Participantes 3