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;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.
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;
Que puis-je faire ?
Merci
@++
Partager