IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

ManyToMany bidirectionnel, delete --> marche pas


Sujet :

Hibernate Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut ManyToMany bidirectionnel, delete --> marche pas
    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'
    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>();
    du coté de 'Customer'
    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;
    et le code du Delete
    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";
    	}
    Voilà le souci...Aidez la cheerleader si vous êtes gentils =) Merci d'avance.

  2. #2
    Membre expérimenté Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Par défaut
    Essaye de rajouter cascade=CascadeType.ALL en option de ton ManyTomany et dis moi si ca marche

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut
    Ça semble marcher, mais ya un souci, je suis obligé de cliquer deux fois sur la ligne pour qu'il s'enlève de la liste...Tu as une quelconque idée sur cela?

    Merci pour tout ça déjà =)

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut
    Désolé du double-post mais j'ai trouvé, je rafraichis pas la liste -_-...Merci beaucoup en tout cas !

  5. #5
    Membre expérimenté Avatar de Shinzul
    Homme Profil pro
    Lecteur assidu de code source
    Inscrit en
    Janvier 2008
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Lecteur assidu de code source
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 174
    Par défaut
    De rien

Discussions similaires

  1. [MySQL] delete na marche pas
    Par fk04 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 08/02/2010, 11h03
  2. File.delete() ne marche pas
    Par rajensias dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 27/03/2009, 15h26
  3. SQL Merge into - delete ne marche pas
    Par Javotte dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/06/2008, 09h29
  4. [MySQL] DELETE en cascade..ma requete ne marche pas
    Par debie1108 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/10/2006, 16h54
  5. Mon Delete ne marche pas!Comment faire?
    Par ghan77 dans le forum Bases de données
    Réponses: 4
    Dernier message: 24/01/2006, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo