Duvida sobre mapeamento do hibernate e banco de dados

Criei uma aplicação Java cliente servidor, na qual a transmisão de informações entre o cliente e o servidor se da via arquivo.txt, todos os clientes geram informações novas em seus bancos locais os quais possuem as mesmas tabelas do servidor. De tempos em tempos é necessario atualizar o servidor com as novas informações dos clientes e após a atualização do servidor todo os cliente serão espelhados com o servidor. Para fazer o codigo de espellhamento do servidor com os cliente foi simples, mais encontrei um problema quando tentei atualizar o servidor. Para fazer a atualização do banco de dados do servidor eu pensei em gerar “Insert” SQL das novas informações do cliente.
Ex: O usuario cadastrou varias Espécies(Objeto Java com os atributos: nome , peso,…), Então o programa ira gerar comandos de inserção SQL (insert into especie (nome , peso) values(…)) para cada especie, então esses comando serão armazenados num txt e o servidor ira ler esse arquivo.txt e executar os comados contidos no arquivo, imaginando que o servidor estaja vazio neste momento.
O problema acontece quando o segundo cliente vai atualizar o servidor, pois a chave primaria das tabelas são auto_increment, o segundo cliente também cadastrou especies, logo as chaves primarias das especies vão colidir e o maior problema é que a tabela de especie se relaciona com a tabela de grupo (N…1) , ou seja, a chave estrangeira também estará errada.
Visto esse problema tentei usar o hibernate e usando o netBeans 6.9 fiz o arquivo de engenharia reversa e com ele gerei o as classes e o mepeamento do hibernate automaticamente, para assim poder salvar os objetos mapeados num arquivo.txt e inserilos no banco. Más estou encontrando o seguinte erro:

26/07/2010 18:42:14 org.hibernate.util.JDBCExceptionReporter logExceptions
Erro hibernate Segunda tentativa – could not insert: [Exportacao.DP.Especie]
SEVERE: Cannot add or update a child row: a foreign key constraint fails (alometria.especie, CONSTRAINT especie_ibfk_1 FOREIGN KEY (idGrupo) REFERENCES grupo (idGrupo) ON DELETE CASCADE)

Gostaria de saber se tem alguma maneira de mapear as classes para resolver esse problema de chave estrangeira?

Banco Utilizado: MySQL

Mapeamento de grupo

[code]<?xml version="1.0" encoding="UTF-8"?>

[/code]

Mapeamento de Especie

[code]<?xml version="1.0" encoding="UTF-8"?>

[/code]

Tabelas do banco

#
# Table structure for table 'especie'
#

CREATE TABLE /*!32312 IF NOT EXISTS*/ `especie` (
  `idEspecie` int(11) NOT NULL AUTO_INCREMENT,
  `idGrupo` int(11) NOT NULL,
  `Nome` varchar(50) NOT NULL,
  `maxM` double DEFAULT NULL,
  `maxF` double DEFAULT NULL,
  `minM` double DEFAULT NULL,
  `minF` double DEFAULT NULL,
  `Modificado` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`idEspecie`),
  UNIQUE KEY `Nome` (`Nome`),
  KEY `idGrupo` (`idGrupo`),
  CONSTRAINT `especie_ibfk_1` FOREIGN KEY (`idGrupo`) REFERENCES `grupo` (`idGrupo`) ON DELETE CASCADE
) ENGINE=InnoDB /*!40100 DEFAULT CHARSET=latin1*/;


#
# Table structure for table 'grupo'
#

CREATE TABLE /*!32312 IF NOT EXISTS*/ `grupo` (
  `idGrupo` int(11) NOT NULL AUTO_INCREMENT,
  `Nome` varchar(50) NOT NULL,
  `Constante` double NOT NULL,
  `Modificado` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`idGrupo`),
  UNIQUE KEY `Nome` (`Nome`)
) ENGINE=InnoDB /*!40100 DEFAULT CHARSET=latin1*/;