Como gravar uma arvore de objetos corretamente no hibernate?

Pessoal,
Estou com o seguinte problema: a app criou um objeto com uma estrutura complexa, formada por objetos recém criados tb. Quando eu tento dar um sessao.save(meuObjetoNovo), o hiber dá o seguinte erro:

org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 1 actual row count: 0 expected: 1

e se eu fizer:

sessao.save(meuObjetoNovo.getMeuObjetoInterno());
sessao.save(meuObjetoNovo);

Os objetos são gravados nas suas tabelas, mas chave estrangeira do objeto interno fica inconsistente (fica zero), já que a chave é gerada pelo banco (mysql) e eu só consigo gravar o objetoNovo DEPOIS de ter gravado seu objeto interno…
Como fazer essa gravação corretamente?
Valeu

Pessoal,
acrescentando. Descobri que se eu abrir uma outra sessao e fizer um update no ObjetoNovo, a coisa vai. Mas o session.flush não teria esse papel?? É meio esquisito ter que fechar a sessao e abri-la de novo para terminar a transação…