Could not synchronize database state with session

Olá Pessoal,

Estou com a seguinte situação, tenho uma tabela de Pessoas, e nesta tabela
tenho um campo chamado IDPai, este campo server por exemplo quando eu
selecionar uma pessoa listar as demais pessoas que são filhos desta pessoa
resumindo a tabela tem chave estrangeira com ela mesma, eu naum posso
excluir uma pessoa que tenha filhos ou então excluir as “pessoas filhos”
quando excluir o pai, mas no meu caso prefiro não exluir e emitir uma msg
na aplicação avisando que não é possivel excluir a pessoa, por possuir
outras pessoas vinculadas a esta pessoa.

Até ai sem maiores problemas, o banco de dados permite isso crie a FK na boa
o banco ta fazendo o controle,

mas como minha aplicação usa o hibernate, preciso fazer este mesmo controle
no hibernate, e naum consigui configurar de forma satisfatória, em todas as
combinações que fiz o hibernate exclui o registros no cache dele, porem na
tabela do banco o registro permanece intacto, quanto tento dar um commit
ou um “flush” na sessão o hibernate tenta efetivar o delete no banco de dados
e recebe um exception do banco alertando sobre a referencia a outro registro;
dai o hibernate fica maluco dando msg de banco fora de sincronia
“Could not synchronize database state with session”

Preciso entaum de alguma configuração no hibernate onde eu consiga controlar
ainda dentro da sessão do hibernate a violação de chave estrangeira, lembrando
que a referencia é feita ao proprio objeto (Pessoa ligada a outra Pessoa);

Quem tiver alguma dica…dica

[]s

JOKA

Coloque o stacktrace completo.

Postando o Stacktrace + debug (Arquivo Anexo)

estou executando o seguinte código:

	try
	{
		Session session = HibernateUtil.currentSession();
		System.out.println(">>>>>>>>>>>>>>>>>>>  Setando o objeto");
		Unidade uni = UnidadeFacade.getObjByPK(11414);
		System.out.println(uni.getNome());
		System.out.println(">>>>>>>>>>>>>>>>>>>  Tentando exclusão");
		session.delete(uni);
		System.out.println(">>>>>>>>>>>>>>>>>>>  Objeto considerado excluido pelo Hibernate");
		System.out.println(">>>>>>>>>>>>>>>>>>>  Tentando fechar a sessão, onde sera acionado o commit no banco");
		session.flush();
		session.close();

	}
	catch (Exception e)
	{
		e.getMessage();
		e.printStackTrace();
	}