Dúvida Funcionamento do Hibernate

Boa Tarde Pessoal,
To precisando da ajuda de vocês.

Situação:

Estou há alguns dias com esse problema:

Esse problema tem ocorrido em diversos cadastros, porém esporadicamente.Ex: O usuário salva 5~10 clientes e está funcionando quando ele vai salvar o 11° dá esse erro, depois consegue salvar normalmente.A mesma coisa para salvar duplicatas, industrias, …

Para descobrir o que está acontecendo coloquei mensagens que pudessem me passar algumas informações para resolver o problema.

[code]try {

//salvar o cliente
this.session = HibernateUtil.openSession(id);
this.tx = this.session.beginTransaction();

this.session.saveOrUpdate(cliente);
this.session.flush();
tx.commit();

return cliente;

} catch ( Exception e ) {

System.out.println("--------------------------------Houve erro ao salvar cliente----------------------------------");
System.out.println("Cliente: " + cliente );

if( cliente != null )
System.out.println("Cliente Código: " + cliente.getCli_codigo() );

}[/code]

Quando ocorreu esse erro, o log me informou o seguinte:

Utilizo o Hibernate Envers para fazer a auditoria dos dados, então todo registro que “entra” no banco de dados fica registrado.E esse cliente 576 nem apareceu pelo banco de dados.

Pergunta:

Se na entidade do Cliente o código está marcado para ser gerado auto-incremento atualmente.Esse código só seria criado quando essa informação desse entrada no banco de dados.Como pode ter sido criado o id e não ter salvo no banco de dados?

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(columnDefinition="SMALLINT(4) UNSIGNED ZEROFILL") private int cli_codigo;

Com essas informações alguém pode me ajudar a achar aonde está o problema?

eh eu nunca tive esse problema, mas dar uma olhada:
http://stackoverflow.com/questions/1561543/hibernate-and-spring-persistance-problem-possible-identity-value-not-incremente
http://jira.hyperic.com/browse/HHQ-1058

flw!