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 :

Table de jointure avec attribut


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut Table de jointure avec attribut
    J'ai deux tables jointes par une autre qui contient en plus un attribut
    table OE qui a comme clé codeOE et d'autres attributs
    table Produit qui a comme clé codeProduit et d'autres attributs
    et une table RapprochementOEProduit qui fait référence aux deux tables OE et Produit et qui a un champ exception en plus

    alors j'ai mappé ceci :

    RapprochementOEProduit.hbm.xml
    <hibernate-mapping package="fr.paf.persistance">
    <class name="RapprochementOEProduit" table="RAPPROCHEMENTOEPRODUIT">
    <composite-id>
    <key-many-to-one name="codeProduit" class="Produit"
    column="CODEPRODUIT" />
    <key-many-to-one name="codeOE" class="OperationElementaire"
    column="CODEOE"/>
    </composite-id>
    <property name="exception" type="int" column="EXCEPTION" />
    </class>
    </hibernate-mapping>
    et dans mes classe Produit.java et OE.java j'ai réjouté un Set pour contenir les rapprochements ... mais ca ne marche pas ...
    j'ai l'erreur suivante :
    INFO: Mapping class: fr.paf.persistance.RapprochementOEProduit -> RAPPROCHEMENTOEPRODUIT
    30 mai 2007 11:31:37 net.sf.hibernate.cfg.Configuration add
    GRAVE: Could not compile the mapping document
    net.sf.hibernate.MappingException: composite-id class must override equals(): fr.paf.persistance.RapprochementOEProduit
    Si quelqu'un peut m'aider MERCI !!!!

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    bon bon j'avance .... j'avais oublié d'implémenter les fonctions equals et hashCode...D'ailleurs si quelqu'un a une explication claire sur l'utilité de ces fonctions car j'ai du mal à les comprendre et quel est leur role a ce niveau d'hibernate?!
    bon j'ai une nouvelle erreur lorsque j'essaye d'inserer dans ma tabe RAPPROCHEMENTOEPRODUIT il me met :
    Hibernate: insert into RAPPROCHEMENTOEPRODUIT (EXCEPTION, CODEPRODUIT, CODEOE) values (?, ?, ?)
    30 mai 2007 12:15:24 net.sf.hibernate.impl.SessionImpl execute
    GRAVE: Could not synchronize database state with session
    Erreur Base de Donnees - Creation Rapprochement
    net.sf.hibernate.MappingException: Unknown entity class: java.lang.Integer
    Si quelqu'un peut m'aider ....merciiiiiii

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    personne n'a une petite idée alors

    comment que je vais faire ?!

    Mercii !!!

  4. #4
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Alors pour ce qui est de equals et hashCode, c'est un peu dit dans la javadoc ...
    equals définit l'égalité entre deux objets.
    hashCode est utilisé pour toutes les Hash, comme HashMap ou HashSet. Il est également parfois utilisé comme premier de niveau de vérification de equals, donc attention au contrat : a.equals(b) => a.hashCode()==b.hashCode()

    Dans le cas d'Hibernate, il me semble que les Set qu'il gère sont des HashSet, mais je ne suis plus sûr du tout.

    Sinon, pour ton problème, il s'agit d'un problème de mapping... Avec la stack complète on pourrait peut etre t'aider, là comme ça je ne vois pas

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    merci chtiq pour cette réponse...
    la stack je sais pas ce que t'entends par ca LOL ... mais bon je mets tt les sources et ttes l'érreur :
    le RAPPROCHEMENTOEPRODUIT.hbm.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping package="fr.paf.persistance">
    	<class name="RapprochementOEProduit" table="RAPPROCHEMENTOEPRODUIT">
    		<composite-id>
    			<key-many-to-one name="codeProduit" 
    				class="Produit"/>
    			<key-many-to-one name="codeOE" 
    				class="OperationElementaire"/>
    		</composite-id>
    		<property name="exception" type="int" column="EXCEPTION" />
    	</class>
    </hibernate-mapping>
    le RAPPROCHEMENTOEPRODUIT.java

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    package fr.paf.persistance;
     
    import java.io.Serializable;
     
    public class RapprochementOEProduit implements Serializable {
     
    	private String codeOE;
    	private String codeProduit;
    	private int exception;
     
    	public RapprochementOEProduit(){}
     
    	public String getCodeOE() {
    		return codeOE;
    	}
     
    	public void setCodeOE(String codeOE) {
    		this.codeOE = codeOE;
    	}
     
     
     
    	public String getCodeProduit() {
    		return codeProduit;
    	}
     
    	public void setCodeProduit(String codeProduit) {
    		this.codeProduit = codeProduit;
    	}
     
    	public int getException() {
    		return exception;
    	}
     
    	public void setException(int exception) {
    		this.exception = exception;
    	}
     
    	public boolean equals(Object other) {
     
    		System.out.println("ON PASSE PAR EQUALS");
     
    		if (this == other) return true;
    		if (!(other instanceof RapprochementOEProduit)) return false;
     
            final RapprochementOEProduit cat = (RapprochementOEProduit) other;
            System.out.println("CODE OE cette instacnce "+getCodeOE());
            System.out.println("CODE OE instacnce comparée "+cat.getCodeOE());
            if (!getCodeOE().equals(cat.getCodeOE())) return false;
            if (!(getCodeProduit().equals(cat.getCodeProduit()))) return false;
     
            return true;
        }
     
        public int hashCode() {
        	System.out.println("ON PASSE PAR HASHCODE");
            int result=0;
            result = getCodeOE().hashCode()+getCodeProduit().hashCode();
            return result;
        }
        public String toString()
        {
        	String s;
        	s="OE : "+getCodeOE()+"\n";
        	s+="Produit : "+getCodeProduit()+"\n";
        	s+="Exception : "+getException();
        	return s;
        }
     
     
    }

    le Produit.hbm.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping package="fr.cnp.paf.persistance">
    	<class name="Produit" table="PRODUIT">
    		<id name="codeProduit" type="string" column="CODEPRODUIT">
    			<generator class="assigned" />
    		</id>
    		<property name="libelleProduit" />
    		<property name="systeme" />
    		<property name="valideProduit" type="int" />
    		<property name="dateCreationProduit" type="date" />
    		<property name="dateEffetProduit" type="date" />
    	</class>
    </hibernate-mapping>

    le OperationElementaire.hbm.xml

    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
    <?xml version="1.0" encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping package="fr.cnp.paf.persistance">
    	<class name="OperationElementaire" table="OPERATIONELEMENTAIRE">
    		<id name="codeOE" type="string" column="CODEOE">
    			<generator class="assigned" />
    		</id>
    		<property name="libelleOE" />
    		<property name="valideOE" type="int" />
    		<property name="etatOE" type="int" />
    		<many-to-one name="codeAppli" class="Application"
    			column="CODEAPPLI" not-null="true" />
    		<property name="dateCreationOE" type="date" />
    		<property name="dateEffetOE" type="date" />
     
     	<set name="menus" table="CORRESPONDANCEMENUOE">
       	<key column="CODEOE" />
       	<many-to-many class="Menu" column="IDMENU"/>
        </set>
     
    	</class>
    </hibernate-mapping>
    et l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Hibernate: insert into RAPPROCHEMENTOEPRODUIT (EXCEPTION, codeProduit, codeOE) values (?, ?, ?)
    1 juin 2007 15:02:44 net.sf.hibernate.impl.SessionImpl execute
    GRAVE: Could not synchronize database state with session
    Erreur Base de Donnees - Creation Rapprochement
    net.sf.hibernate.MappingException: Unknown entity class: java.lang.String
    ouais j'ai changé de type je suis passé de int à String car j'avais cru voir que ca aurait pu venir de ca mais non

    et je crée l'objet ds une classe:
    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
    public static void enregistrerRapprochementOEProduit(String OE,ArrayList codesProduits,String exception)
    	{
    		try
    		{
    		Session session = HibernateUtil.currentSession();
    		Transaction tx = session.beginTransaction();
     
    		int nbProduit = codesProduits.size();
    		for (int i=0;i<nbProduit;i++)
    		{
    			RapprochementOEProduit rapp= new RapprochementOEProduit();
    			rapp.setCodeOE(OE);
    			String cp = (String) codesProduits.get(i);
    			rapp.setCodeProduit(cp);
    			if (exception.equals("true"))
    			{
    				rapp.setException(1);
    			}
    			else
    			{
    				rapp.setException(0);
    			}
     
    			session.save(rapp);
    			tx.commit();
    		}
    voilà merci chtiq pr ta réponse jcommencais a desespérer ....

  6. #6
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Alors deux petites remarques avant tout :
    1) conventions de nommage : si tu utilises une abbréviation, ça donne quand même oE comme nom de variable et non OE
    2) Pour le code, utilise les balises et non les balises quote...

    Pour ce qui est de ton problème, je n'ai pas compris ce que tu as changé par rapport à avant...

    Quant à ton log, c'est un log lo4j ?? Si oui, passe en debug stp.
    La stack c'est la pile des appels que tu as dans une Exception. Là on a aucune idée de où ton exception se produit ...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    euhhh pour le log j'en sais rien ...je crois que c'est log4j ... comment jfais pour passer en débug
    oui pr l'abréviation t'as raison faut que je corrige parce que c'est pas la seule

    merci

  8. #8
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Ben ton log il s'affiche où ? Et tu as un fichier log4j.properties ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    euhhh pour être sincère j'ai jamais trop fais gaffe à tout ca, je regarde juste les erreurs qui s'affiche dans la console ...
    je n'ai pas de fichier log4j.properties... j'ai cherché mais rien ...
    et niveau console s'affiche juste ce que je vous ai écrit !!!
    sinon le log ... je sais pas j'ai trouvé un fichier ou je retrouve pas mal d'erreurs qui se sont produit dans l'aprem ... mais celle là n'apparait pas
    grrr j'y comprends pas grd chose

    mercki en tout cas

  10. #10
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Ben ça pourrait être pas mal que tu regardes comment mettre en place log4j avec hibernate, c'est tout simple ... et ça t'aiderait beaucoup pour debugger

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    le truc c'est que je suis en stage et je ne peux pas faire ce que je veux ...
    mais bon je sais très bien à quel moment ca bug, c'est au niveau de l'insertion dans la base
    car j'arrive a crée un objet RapprochementOEProduit et à y rentrer des valeurs mais dès que je fais le save ...là j'ai l'erreur ...
    j'ai lu quelque chose concernant la persistance de classe String, mais je n'ai pas tout compris ...

    mercki

  12. #12
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Ben le log ne te donne pas seulement quand ça plante, mais des indications de pourquoi ca plante ...
    Quand tu fais le save, plein de choses se passent ... Va savoir comme ça laquelle pose problème ...

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    j'ai trouvé cette semaine la solution et je viens vous dire quand même
    alors en fait cela venait de mon fichier java qui mappait la classe RAPPROCHEMENTOEPRODUIT

    en effet j'avais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class RapprochementOEProduit implements Serializable {
     
    	private String codeOE;
    	private String codeProduit;
    	private int exception;
    j'avais vu ca sur un topic ici mais en fait je me suis rendu compte que dans mes classes ou j'avais simplement des many-to-one je mettais carrément le type de l'objet associé et non pas le type de la clé de la table
    donc j'ai changé mon fichier java en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public class RapprochementOEProduit implements Serializable {
     
    	private OperationElementaire codeOE;
    	private Produit codeProduit;
    	private int exception;
    et là ça marche ...
    merci bcp en tout cas chtig pour ton aide
    allez zou jretourne

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 83
    Par défaut
    c'est pas plutot l'inverse ?

    Je me trompe peut etre ...

  15. #15
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Par défaut
    au faite, je ss confrontée au meme prob que toi ( table jointure avec 3 attributs) mais apparemment tu l'as resolu.
    tu peux menvoyer le rapprochementproduitoe.hbm.xml?
    Merci d'avance

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    tiens mon rapprochementproduitoe.hbm.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?xml version="1.0" encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping package="fr.paf.persistance">
    	<class name="RapprochementOEProduit" table="PAFRAPPROCHEMENTOEPRODUIT">
    		<composite-id>
    			<key-many-to-one name="idProduit" 
    				class="Produit"/>
    			<key-many-to-one name="idOE" 
    				class="OperationElementaire"/>
    		</composite-id>
    		<property name="exception" type="int" column="EXCEPTIONRAPP" />
    	</class>
    </hibernate-mapping>

  17. #17
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Par défaut
    Merci bcp , tu peux me montrer aussi les fichiers de mapping des classes produitElementaire et operation?

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 94
    Par défaut
    produit.hbm.xml:
    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
     
    <?xml version="1.0" encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping package="fr.paf.persistance">
    	<class name="Produit" table="PAFPRODUIT">
    		<id name="idProduit" type="int" column="IDPRODUIT">
    			<generator class="increment" />
    		</id>
    		<property name="codeProduit"/>
    		<property name="libelleProduit" />
    		<property name="systeme" />
    		<property name="valideProduit" type="int" />
    		<property name="etatProduit" type="int"/>
    		<property name="dateCreationProduit" type="date" />
    		<property name="dateEffetProduit" type="date" />
    	</class>
    </hibernate-mapping>
    operationelementaire.hbm.xml:
    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
     
    <?xml version="1.0" encoding='utf-8'?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping package="fr.paf.persistance">
    	<class name="OperationElementaire" table="PAFOPERATIONELEMENTAIRE">
    		<id name="idOE" type="int" column="IDOE">
    			<generator class="increment" />
    		</id>
    		<property name="codeOE"/>
    		<property name="libelleOE" />
    		<property name="valideOE" type="int" />
    		<property name="etatOE" type="int" />
    		<many-to-one name="idAppli" class="Application"
    			column="IDAPPLI" not-null="true" />
    		<property name="dateCreationOE" type="date" />
    		<property name="dateEffetOE" type="date" />
     
     	<set name="menus" table="PAFCORRESPONDANCEMENUOE">
       	<key column="IDOE" />
       	<many-to-many class="Menu" column="IDMENU"/>
        </set>
     
    	</class>
    </hibernate-mapping>
    Mon Rapprochement entre les deux tables n'apparait pas dans le mapping de ces tables ... si ca peut t'aider ...
    bon WE à tous !!!!

  19. #19
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    328
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 328
    Par défaut
    Merci c'est tres gentil de ta part
    bn We a vs aussi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Doctrine] Peupler des tables n-n avec attributs avec fixture
    Par avalo dans le forum ORM
    Réponses: 6
    Dernier message: 01/09/2011, 15h00
  2. Réponses: 4
    Dernier message: 06/08/2010, 11h38
  3. [Mapping] Table de liaison avec attributs
    Par JulCh dans le forum Hibernate
    Réponses: 0
    Dernier message: 06/07/2010, 10h10
  4. Table d'association avec attribut
    Par SheenaRingo dans le forum Hibernate
    Réponses: 5
    Dernier message: 23/10/2008, 13h04
  5. Pb pour créer table de jointure avec un attribut
    Par cissou06 dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 28/05/2008, 18h30

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