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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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

@++