Deletar registro no hibernate

Olá pessoal, sou iniciante em hibernate, gostaria de um help

Estou tentando deletar um registro de uma tabela e os relacionamentos.

Exemplo eu tenho a tabela Produto e a tabela Estoque. A tabela Estoque tem o id (foreing key) da tabela Produto. Quero que quando eu remove o registro na tabela Produto ele remova também da tabela Estoque. Já tentei de varias formas mas não consegui.

Se eu executar do jeito que está no exemplo a baixo ele da erro de violacão de constraint (ConstraintViolationException)

Segue as minhas entidades e minhas classes.

Essa é minha entidade Produto

[code]@Entity

public class Produto {
@Id
@GeneratedValue
private int id;
private String nome;
private String descricao;
private String preco;
private String desconto_max;
private String comissao;
@Temporal(TemporalType.DATE)
private Date datAtivacao;
@Temporal(TemporalType.DATE)
private Date datDesativacao;

// metodos get e sets
[/code]

Essa é minha entidade estoque

@Entity public class Estoque { @Id @GeneratedValue private int id; private int quantidade; @Temporal(TemporalType.DATE) private Date datAtualizacao; @ManyToOne private Produto produto;

Meu Bean com o metodo excluir

public String excluir(){ //Pega o objeto selecionado no DataTable produto = (Produto) objDataTableProduto.getRowData(); //Cria a sessao com o banco e a trasacao Session session = HibernateUtil.getSession(); Transaction t = session.beginTransaction(); try{ session.delete(produto); t.commit(); SessionUtil.addSuccessMessage("OperacaoSucesso"); }catch (Exception e){ t.rollback(); SessionUtil.addErrorMessage("OperacaoFracasso"); }finally{ session.close(); } return null; }

[code]public class Tes {
void excluiProduto() {
Produto p = null;// pega o produto de algum lugar
// dao.excluiProduto§;
}

void excluiProdutoNoDAo(Produto p){
	Produto exists = session.findById(p.getId());
	if(exists!=null){
		// nao precisa retirar da lista de produtos do estoque
		// a nao ser que nos produtos do estoque exista o cascade.ALL
		
		//mas aqui tem setar pra null
		exists.setEstoque(null);

		session.delete(exists);
	}else
		//deu merda
}

}

class Produto {
long id;
String nome;
@ManyToOne
Estoque estoque;
}

class Estoque {
long id;
@OneToMany(mappedBy=“estoque”) // se aqui tivesse cascade tinha q tirar da lista quando deleta um produto
List produtos;
}
[/code]

Amigo muitissimo obrigado por ter respondido, mas não consegui entender muito o seu codigo.

Primeiro ele não consegue identificar o código findById fala que tem que setar um objeto.

Segundo o relacionamento das suas entidades estao diferentes o meu, a entidade estoque que recebe o @ManyToOne e nao a produto. Precisa setar o relacionamento para produto na entidade produto? Porque referente a banco de dados as tabela estao assim:

Tabela Produto
ID
Nome
Descricao

Tabela Estoque
ID
Quantidade
Data
Produto_ID

Precisa setar na minha entidade produto o @OneToMany?