Hibernte - Excluir usuário que esta relacionado com outra taabela

Tenho 2 tabelas: ‘Usuario’ e ‘Solicitacao’. 1 usuario pode fazer varias solicitações. Dentro da tabela ‘Solicitação’ há um campo que é ‘status’, que pode ser 'aberto ou ‘fechado’

Quando o usuario faz alguma solicitação, automaticamente o codigo dele irá ficar na tabela de solicitação e o status ‘aberto’. Ao terminar uma solicitação o status é ‘fechado’

O problema é que quando eu quiser apagar o usuario do banco ele não aceita devido o codigo do usuario estar na tabela da solicitação (Foreing Key).

Como faço para excluir o usuario, quando o status relacionado com aquele usuário estiver ‘fechado’?

Desde já obrigado.

Não entendi exatamente o que você deseja fazer, se é excluir o usuario e as solicitações dele, não importando o resultado, ou se isso apenas se não tiver alguma solicitação aberta. para começar, no seu relacionamento (acredito que esteja usando anotações) de uma olhada no atributo cascade, que ele diz qual comportamento deve ter quando a entidade possui outra associada sofre alguma modificação.
Agora o ponto de não apagar caso tenha alguma solicitação aberta, isso é uma regra de negócio sua, uma lógica do seu programa, e deve ter alguma verificação no código antes de ser realizada essa tentativa de remover a entidade ( se eu estiver errado alguém me corrija).

cara,

vc vai ter que fazer essa exclusão manualmente, com sql, pois com cascade não vai funcionar. vc vai ter que fazer o seguinte, quando o usuario executar a exclusão, vc vai ter que fazer uma pesquisa na tabela de solicitação com o id do usuario e ver se o status é aberto ou fechado, ser for fechado vc vai fazer um delete que apague o usuario e depois a sua solicitação e se for aberto, vc vai retornar uma mensagem para o usuario, falando que esse usuario não pode ser excluído, pois ele possue solicitação em aberto.

t+

Tenta fazer isso cara

@OneToMany(cascade=CascadeType.ALL)
private List<Solicitacao> solicitacoes;

Assim quando excluir o usuário, as solicitações dele também serão excluídas

eu acredito que o que disse o bglbruno deve funcionar, se nao

tente isso aqui:

@OneToMany()
@Cascade({ CascadeType.SAVE_UPDATE, CascadeType.DELETE_ORPHAN })
private List solicitacoes;

pessoal,

acho que vcs não entenderam a necessidade do nosso amigo, pois ele so quer excluir quando o status na tabela solicitação for ‘fechado’, então o cascade não vai funcionar, ele vai ter que fazer isso manualmente, como expliquei no post.

t+

alissonvla, mas ele não precisa fazer na mão, basta ele implementar uma regra antes de excluir, no DAO, ou na classe que ele coloca a regra de negócio, que julgo ser a melhor opção, do que no DAO

Obrigado a todos. Farei os testes e postarei o que ficou resolvido

Pessoal e se meu relacionamento enter as classes ficar do lado da solicitacao

@ManyToOne
private Usuario usuario;

Há alguma forma de fazer isso?