Entrées dupliquées sur relation ManytoMany
Bonjour
Je suis actuellement en train de réaliser une application avec Struts2, Spring2 et hibernate3, sur une base Oracle. Celle-ci a des objets avec associations en manytomany de la façon suivante :
A (ID_A, NAME_A)
B (ID_B, NAME_B)
A_B (#ID_A, #ID_B)
J'ai créé mes objets de la manière suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| @Entity
@Table(name = "A")
public class A extends AbstractModelObject implements Serializable {
@Id
@GenericGenerator(name="kaugen" , strategy="increment")
@GeneratedValue(generator="kaugen")
@Column(name = "ID_A")
private int idA;
@Column(name = "NAME_A")
private int nameA;
@ManyToMany(cascade=CascadeType.ALL,
fetch=FetchType.LAZY)
@JoinTable(name = "A_B",
joinColumns = {@JoinColumn(name="ID_A")},
inverseJoinColumns = {@JoinColumn(name="ID_B")},
uniqueConstraints = {@UniqueConstraint(
columnNames = {"ID_A", "ID_B"})}
)
private List<B> B; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| @Entity
@Table(name = "B")
public class B extends AbstractModelObject implements Serializable {
@Id
@GenericGenerator(name="kaugen" , strategy="increment")
@GeneratedValue(generator="kaugen")
@Column(name = "ID_B")
private int idB;
@Column(name = "NAME_B")
private int nameB;
@OneToMany(mappedBy = "B")
private List<A> A; |
L'insertion dans les tables A et B, ainsi que leurs insertions fonctionnent très bien. Cependant, au niveau de ma relation A_B, le premier enregistrement fonctionne, mais si je modifie un élément de A ou B et que je l'update, hibernate tente de recréer un tuple dans A_B, alors que ce lien existe déjà. J'ai donc une erreur de clé primaire déjà existante.
Que puis-je faire ?
Merci :)
@++