[RESOLVIDO] Retornar Erro quando faz um Delete Cascade

Fala pessoal tenho duas entidades uma pai e a outra filho, mapeadas normalmente com um


{
.
.
@OneToMany(mappedBy = "area", fetch=FetchType.LAZY, cascade= CascadeType.ALL)
.
.
}

e

{
.
.
.
@JoinColumn(name = "AREA", referencedColumnName = "IDAREA")
@ManyToOne(optional = false, cascade= CascadeType.ALL)
.
.
.
}

Os cascade na hora de Deletar estão perfeitos, ao deletar o pai os filhos vão juntos.

Mas eu estava pensando em uma coisa mais simples, ao deletar o pai retornar um erro dizendo que não pode fazer pq ainda tem os filhos

Retirei o Cascade, deixei apenas no Save e Update, deixei Detached e nada

O Hibernate sempre faz o delete só que nestes casos ele deixa o registro lá, órfão.

Me pergunto se existe uma mensagem para isto ou eu terei que fazer na mão com um criteria e depois verificar se o registro ainda tem filhos para dar a mensagem?

Agradeço muito a ajuda

Fala lmmoreira,
O seu processo que faz o Delete o objetos estão devidamente settado?
Pai com o Filho e o Filho com o Pai?

Pai pai = new Pai();
Filho filho = new Filho();

pai.setFilho(filho);
filho.setPai(Pai);

Session session = HibernateUtil.getSession();  
        Transaction transaction = session.beginTransaction();                                  
        session.remove(pai);  
        session.flush;  
        transaction.commit();

Exemplo.

vlw :slight_smile: :smiley:

Opa

Cara valeu mesmo a ajuda, mas agoar descobri que o que estava errado era a forma que eu fazia conexao com o Hibernate

Se nao colocar org.hibernate.dialect.MySQL5InnoDBDialect no dialeto ele não passa para InnoDB

E ai nao tem relacionamentos

[quote=lmmoreira]Opa

Cara valeu mesmo a ajuda, mas agoar descobri que o que estava errado era a forma que eu fazia conexao com o Hibernate

Se nao colocar org.hibernate.dialect.MySQL5InnoDBDialect no dialeto ele não passa para InnoDB

E ai nao tem relacionamentos

[/quote]
blz meu veio… coloca com Resolvido no campo Assunto.

fui