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 :

Relation ManyToMany bidirectionnelle


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut Relation ManyToMany bidirectionnelle
    Bonjour,

    dans mon modèle j'aimerais avoir une relation many-to-many bidirectionnelle entre 2 classes : Client et Fsl

    Dans Client j'ai :
    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
     
    @ManyToMany(
    	cascade={CascadeType.ALL},
    	targetEntity=Fsl.class
    )
    @JoinTable(
    	name="client_fsl",
    	joinColumns=@JoinColumn(name="client_id"),
    	inverseJoinColumns=@JoinColumn(name="fsl_id")
    )
    public List<Fsl> getFsls() {
    	return fsls;
    }
    public void setFsls(List<Fsl> fsls) {
    	this.fsls = fsls;
    }
    Et dans Fsl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    @ManyToMany(
    	cascade={CascadeType.ALL},
        mappedBy = "fsls",
        targetEntity = Client.class
    )
    public List<Client> getClients() {
    	return clients;
    }
    public void setClients(List<Client> clients) {
    	this.clients = clients;
    }
    Et quand j'essaie de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Client client2 = new Client();
    client2.setCivility(civilityDao.getByCode(Civility.Code.MME));
    client2.setFirstName("Second");
    client2.setLastName("Client");
    client2.setLogin("client2");
    client2.setPassword("5f4dcc3b5aa765d61d8327deb882cf99");
    client2.setCompany(companyDao.findAll().get(0));
    client2.getFsls().add(fslDao.findAll().get(0));
    userDao.saveOrUpdate(client2);
    J'ai une exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    illegal attempt to associate a collection with two open sessions
    A noter que si je retire la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    client2.getFsls().add(fslDao.findAll().get(0));
    Tout fonctionne bien.

    Là j'avoue que je ne vois pas trop bien d'où vient le problème, si quelqu'un a une idée

  2. #2
    Membre éprouvé
    Avatar de David Gimelle
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 79
    Par défaut
    Bonjour,

    Tes 2 Dao n utilisent pas les memes session hibernate c est pour cela que ca ne fonctionne pas.

    Si tu place le code de fslDao.findAll() dans userDao et donc que tu utilises la meme session hibernate ca devrais fonctionner.

    Tu peux consulter ce lien : http://www.developpez.net/forums/d10...llection-with/

    David Gimelle
    Developpeur J2ee
    blog: Http://getj2ee.over-blog.com

  3. #3
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    ok merci c'est très clair
    comme j'utilise spring pour gérer les sessions hibernate le problème se situe plus de ce côté là, je vais fouiller un peu

Discussions similaires

  1. Relation ManyToMany bidirectionnelle
    Par Mister Nono dans le forum Doctrine2
    Réponses: 6
    Dernier message: 24/04/2014, 23h07
  2. Réponses: 13
    Dernier message: 28/06/2013, 09h23
  3. Relation ManyToMany bidirectionnelle et autoreflexive
    Par FadeToBlack dans le forum Doctrine2
    Réponses: 16
    Dernier message: 05/04/2013, 16h36
  4. Réponses: 8
    Dernier message: 27/02/2009, 01h37
  5. [NHibernate.Mapping.Attributes] Relation ManyToMany
    Par anthyme dans le forum NHibernate
    Réponses: 2
    Dernier message: 12/07/2007, 20h34

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