Relacionamento one-to-many não deleta parte mais fraca

Olá pessoal, meu problema é o seguinte:

tenho um relacionamento entre PROCESSO e OBJETO, onde um PROCESSO possui zero ou vários OBJETOs. Para isso fiz:

Processo.hbm.xml

<set name="objetos" cascade="all" lazy="false" order-by="nome asc" > <key column="processo_id" /> <one-to-many class="br.com.shifti.ri.framework.base.Objeto" /> </set>

e em Objeto.hbm.xml

<class name="br.com.shifti.ri.framework.base.Objeto" table="objeto"> <id name="id" column="objeto_id"> <generator class="increment" /> </id> <property name="nome" /> </class>

Com isto, vamos exemplificar: em dado momento o PROCESSO “P” possui os OBJETOs “O1” e “O2”. Daí o usuário deseja que apenas o objeto “O1” continue associado a “P”. Como eu utilizo Struts2, na Action eu pego os OBJETOs e seto no PROCESSO e daí então mando atualizar o PROCESSO “P”.

Daí o que acontece é: o Hibernate atualiza a tabela OBJETO para que apenas o OBJETO “O1” esteja associado a “P”, porém o outro OBJETO continua na tabela, com o campo processo_id NULL. A minha questão é: como fazer para que o Hibernate delete este registro, e não apenas sete o processo_id para NULL.

Desde já agradeço a ajuda de todos!

abs,

Sou novato no hibernate, mais qdo passei por um problema parecido utilizei o CASCADE.ALL

e aew Hebertbc,

valeu pela atenção aew…
mas como vc pode ver no código que postei, eu já estou utilizando cascade=“all” no mapeamento:

mas pelo que sei, cascade=“all” serveria se eu deletasse o objeto PROCESSO, pois ai todos os OBJETOS associados ao meu PROCESSO seriam deletados também.

Aki ta um trechodo meu codigo talvez vc entenda.

@OneToMany(cascade = CascadeType.ALL, mappedBy = "idAgendamento")
    @org.hibernate.annotations.Cascade(value = org.hibernate.annotations.CascadeType.ALL)
    private List<Gruposchecklist> gruposchecklistList;

Quando removo um objeto da lista(gruposchecklistList) e salvo o Agendamento, ele é deletado do banco ficando somente os que continuam na lista.

Alguem consegui resolver, estou com o mesmo problema?

O registro é eliminado da collection, porém, permanece no banco de dados e quando o objeto movimento é recarregado a despesa aparece novamente.

	@OneToMany(cascade = CascadeType.ALL,mappedBy="movimento") 
	private Collection<MovimentoDespesa> despesasMovimento;
	@ManyToOne
	@JoinColumn(name="movimento_id")
	private MovimentoConta movimento;
	public void deleteDespesa(ActionEvent event) {
		Dao<MovimentoConta> dao = new Dao<MovimentoConta>(HibernateUtil.getSession(), MovimentoConta.class);
		MovimentoDespesa movimentoDespesa = (MovimentoDespesa) MyUtil.MyActionEvent(event, "deleteDespesa");
		movimentoConta.getDespesasMovimento().remove(movimentoDespesa);
		dao.merge(movimentoConta);
	}

Resolvi adicionando @Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)

	@OneToMany(cascade = CascadeType.ALL, mappedBy="movimento")
	@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
	private Collection<MovimentoDespesa> despesasMovimento;