2010-05-05 3 views
1

J'ai plusieurs entités. Deux d'entre eux ont eu une relation plusieurs-à-plusieurs. Lorsque je fais une plus grande opération sur ces entités, il échoue avec cette exception:Hibernate insérant dans la table de jointure

org.hibernate.exception.ConstraintViolationException: could not insert collection rows: 

J'exécute l'opération dans un contexte @Transactional. Je ne fais aucun rinçage explicite i mes daos. Le vidage est déclenché par une requête. Dans la file d'attente sont 15 éléments (tous de la même structure). l'un d'eux échoue toujours (mais c'est toujours différent (j'ai vérifié) et toujours à une position différente).

Quelqu'un at-il un indice pour ce que je pourrais faire de mal?

Mon Mapping:

@ManyToMany(targetEntity = CategoryImpl.class) 
protected Set<Category> categories = new HashSet<Category>(); 

Répondre

1

Difficile à dire avec le niveau de détail actuel. L'association est-elle bidirectionnelle? Avez-vous un côté propriétaire (avec un mappedBy de l'autre côté) défini? Pouvez-vous activer la journalisation pour voir les requêtes exécutées et identifier celle qui cause le problème.

+0

L'association est unidirectionnelle. Le problème se produit lors de l'insertion dans la table de jointure. – Karl

+0

@Karl Ok. Avez-vous réussi à identifier l'instruction SQL qui échoue? –

+0

La requête est la suivante: Mise en veille prolongée: insérer dans les valeurs PictureImpl_CategoryImpl (PictureImpl_id, categories_id) l'exception de ce qui suit: WARN JDBCExceptionReporter: 100 - Erreur SQL: (?,?) 1062, SQLState: 23000 erreur JDBCExceptionReporter: 101 - Double entrée '2-18' pour la clé 'PRIMARY' J'utilise mysql (5.1.46) innodb avec mysql5innodbdialect – Karl

Questions connexes