[RESOLVIDO]Problemas para salvar com ManyToMany

Estou tentando realizar uma inserção no banco de dados, usando mapeamento JPA da seguinte forma:

@ManyToMany(cascade=CascadeType.ALL) @JoinTable(name = "atividade_idoso", joinColumns = { @JoinColumn(name = "matricula_idoso") }, inverseJoinColumns = { @JoinColumn(name = "cod_atividade") }) private List<Atividade> atividades;

@ManyToMany(cascade=CascadeType.ALL) @JoinTable(name = "atividade_idoso", joinColumns = { @JoinColumn(name = "cod_atividade", referencedColumnName = "cod") }, inverseJoinColumns = { @JoinColumn(name = "matricula_idoso") }) private List<Idoso> idosos;

Mas quando vou realizar a inserção ocorre o seguinte erro:

Caused by: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1215) at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1148) at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1154) at org.hibernate.ejb.AbstractEntityManagerImpl$3.mapManagedFlushFailure(AbstractEntityManagerImpl.java:1068) at org.hibernate.transaction.synchronization.CallbackCoordinator.beforeCompletion(CallbackCoordinator.java:122) at org.hibernate.transaction.synchronization.HibernateSynchronizationImpl.beforeCompletion(HibernateSynchronizationImpl.java:51) at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:437) ... 58 more Caused by: org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275) at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:114) at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:109) at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:244) at org.hibernate.persister.collection.AbstractCollectionPersister.recreate(AbstractCollectionPersister.java:1179) at org.hibernate.action.CollectionRecreateAction.execute(CollectionRecreateAction.java:58) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:273) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:265) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:188) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1216) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:383) at org.hibernate.transaction.synchronization.CallbackCoordinator.beforeCompletion(CallbackCoordinator.java:117) ... 60 more Caused by: java.sql.BatchUpdateException: Cannot add or update a child row: a foreign key constraint fails (`cci`.`atividade_idoso`, CONSTRAINT `fk_atividade_has_idoso_idoso1` FOREIGN KEY (`matricula_idoso`) REFERENCES `idoso` (`matricula`) ON DELETE CASCADE ON UPDATE CASCADE) at com.mysql.jdbc.ServerPreparedStatement.executeBatch(ServerPreparedStatement.java:734) at com.sun.gjc.spi.base.StatementWrapper.executeBatch(StatementWrapper.java:569) at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268) ... 73 more

Isso é problema de mapeamento ou é na base??

Obrigado!

Va lá no banco de dados e verifique como estão as chaves estrangeiras,
ocorreu este erro comigo o JPA criava duas chaves estrangeiras para o mesma tabela e mesmo campo(id)
eu não consegui ajustar o mapeamento a solução foi ir direto no banco e excluir a chave estrangeira que
era mencionada na msg de erro.
Se conseguir resolver sem ter que excluir na mão a KF posta aqui que provavelmente terei que fazer o mesmo.

Obs.: Estou supondo que vc esteja criando suas tabelas via JPA.

Resolvi o problema não estou criando minhas tabelas via JPA não.
O probelema era pq estou usando erança e havia esquecido disto.
então os Idosos possuem uma chave composta.

Mesmo assim agradeço a ajuda.