Hi everyone!
j'ai vu plusieurs topics relatifs à mon problème mais je n'y ai pas vu de réponses bien satisfaisantes qui puissent m'aider...
Je m'explique: J'ai 2 tables 'Contact' et 'Customer' qui sont liées par une table jointure contenant les 2 clés primaires des deux tables citées.
Mon but est de vouloir supprimer de la BD un contact. Mais il n'est pas content parce que ça revient à mettre un contactNo à NULL dans la table de jointure.
Et pourtant avant de détruire le contact, je prends bien soin à le détacher de ses 'customer' et inversement.
Le code de comment est fait la liaison entre 'contact' et 'customer' :
du coté de 'Contact'
du coté de 'Customer'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 /** * To make the link between Customer and Contact. * */ @ManyToMany(mappedBy = "contacts", fetch = FetchType.LAZY) @OrderBy(value = "name ASC") private Set<Customer> customers = new HashSet<Customer>();
et le code du Delete
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 /** * To make the link between Customer and Contact. */ @ManyToMany(fetch = FetchType.LAZY) @JoinTable(name = "CustomerContact", schema = "correspondenceConfig", joinColumns = { @JoinColumn(name = "customerNo") }, inverseJoinColumns = { @JoinColumn(name = "contactNo") }) private Set<Contact> contacts = null;
Voilà le souci...Aidez la cheerleader si vous êtes gentils =) Merci d'avance.
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33 /** * Delete Contact. Erase a contact from the database */ public String deleteContact() { setDeletedMode(true); List<Customer> tmp = getContextContact().getCustomersAsList(); for (Customer c : tmp) { Iterator<Contact> it = c.getContacts().iterator(); Contact tmp = new Contact(); while (it.hasNext()) { tmp = it.next(); if (tmp.getContactNo().equals(getContextContact().getContactNo())) { it.remove(); } } customerManager.saveCustomer(c); } getContextContact().getCustomers().clear(); contactManager.saveContact(getContextContact()); // --------------------------------------------- contactManager.deleteContact(getContextContact()); return "cContact"; }
Partager