Bulk delete do Hibernate comitando sem eu pedir?

Quando faco um bulk delete pela Query:

String hqlDelete = "delete " + BlaBla.class.getName() + " p where p.topic = :topic";
Query delete = createQuery(hqlDelete).setParameter("topic", topic);
delete.executeUpdate();

Eu faco varios bulk deletes em uma transacao só que esta em FlushMode.COMMIT. Esse delete arranca algumas linhas que quebra algumas restricoes de foreign key, só que no proximo bulk delete eu apago os outros, o que zeraria o problema para o commit funcionar.

Só que o Hibernate lança exception ANTES de eu chamar o transaction.commit(), indicando que o delete ele esta chamando diretamente, e isso me da o problema de foreign key:

Caused by: java.sql.SQLException: Cannot delete or update a parent row: a foreign key constraint fails

Alguma ideia para resolver? Sem chances de usar session.delete() pois eu levantaria dezenas de milhares de objetos na memoria.
Ja ate migrei meu projeto que usava hibernate 3.1 para o 3.2cr2 e nada… ele continua comitando ao primeiro bulk delete

Ele não está exatamente fazendo commit, pelo que entendi, apenas executando os comandos de delete. Isso é normal, o Hibernate da flush em todas alterações que estão na fila se ele achar que uma nova operação que vc está fazendo pode ser interferida pelo resultado das anteriores.

A solução é usar o suporte a cascade delete do hibernate. Não rola?

Como o louds falou, vc pode definir um set no seu mapping do hibernate.

habilitando o cascade delete

    <set name="TableVO" inverse="true" lazy="true" [b]cascade="all"[/b] order-by="position ASC">
      <key column="id_Table" not-null="true"/>
      <one-to-many class="br.com.caelum.proj.TableVO"/>
    </set>