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

Frameworks Web Java Discussion :

Illegal attempt to associate a collection with two open sessions


Sujet :

Frameworks Web Java

  1. #1
    Invité
    Invité(e)
    Par défaut Illegal attempt to associate a collection with two open sessions
    salut,
    j'arrive pas a supprimer un fournisseur de ma base de donné.. d'ailleur j'ai essayé le mm code sur d'autre entites est ça a marché
    voici l'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Illegal attempt to associate a collection with two open sessions
    ma classe Fournisseur:
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    package com.project.beans;
     
    import java.util.ArrayList;
    import java.util.Collection;
     
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.Id;
    import javax.persistence.ManyToMany;
     
    @Entity
    public class Fournisseur {
     
        @Id
        @GeneratedValue
        private int                 idFournisseur;
        private String              nom;
        private String              email;
        private String              adresse;
        private String              description;
        private String              tel;
        @ManyToMany
        private Collection<Produit> produits = new ArrayList<Produit>();
     
        public Fournisseur() {
        }
     
        public Fournisseur( String nom, String email, String adresse, String description, String tel,
                ArrayList<Produit> produits ) {
            this.nom = nom;
            this.email = email;
            this.adresse = adresse;
            this.description = description;
            this.tel = tel;
            this.produits = produits;
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom( String nom ) {
            this.nom = nom;
        }
     
        public String getEmail() {
            return email;
        }
     
        public void setEmail( String email ) {
            this.email = email;
        }
     
        public String getAdresse() {
            return adresse;
        }
     
        public void setAdresse( String adresse ) {
            this.adresse = adresse;
        }
     
        public String getDescription() {
            return description;
        }
     
        public void setDescription( String description ) {
            this.description = description;
        }
     
        public String getTel() {
            return tel;
        }
     
        public void setTel( String tel ) {
            this.tel = tel;
        }
     
        public Collection<Produit> getProduits() {
            return produits;
        }
     
        public void setProduits( Collection<Produit> produits ) {
            this.produits = produits;
        }
     
        public int getIdFournisseur() {
            return idFournisseur;
        }
     
    }
    ma classe service :
    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
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    package com.project.service;
     
    import java.util.List;
     
    import org.hibernate.Session;
    import org.hibernate.Transaction;
     
    import com.project.beans.Fournisseur;
    import com.project.dao.IDao;
    import com.project.util.HibernateUtil;
     
    public class FournisseurService implements IDao<Fournisseur> {
        private Session     session;
        private Transaction tx;
     
        @Override
        public boolean create( Fournisseur o ) {
            try {
                session = HibernateUtil.getSessionFactory().openSession();
                tx = session.beginTransaction();
                session.save( o );
                tx.commit();
                return true;
            } catch ( Exception e ) {
                if ( tx != null )
                    tx.rollback();
                return false;
            }
        }
     
        @Override
        public boolean update( Fournisseur o ) {
            try {
                session = HibernateUtil.getSessionFactory().openSession();
                tx = session.beginTransaction();
                session.update( o );
                tx.commit();
                return true;
            } catch ( Exception e ) {
                if ( tx != null )
                    tx.rollback();
                return false;
            }
        }
     
        @Override
        public boolean delete( Fournisseur o ) {
            try {
                session = HibernateUtil.getSessionFactory().openSession();
                tx = session.beginTransaction();
                session.delete( o );
                tx.commit();
     
                return true;
            } catch ( Exception e ) {
                System.out.println( e.getMessage() );
                if ( tx != null )
                    tx.rollback();
                return false;
            }
        }
     
        @Override
        public Fournisseur findById( int id ) {
            Fournisseur fournisseur = null;
            try {
                session = HibernateUtil.getSessionFactory().openSession();
                tx = session.beginTransaction();
                fournisseur = (Fournisseur) session.get( Fournisseur.class, id );
                tx.commit();
                return fournisseur;
            } catch ( Exception e ) {
                if ( tx != null )
                    tx.rollback();
                return null;
            }
        }
     
        @Override
        public List<Fournisseur> findAll() {
            List<Fournisseur> fournisseurs = null;
            try {
                session = HibernateUtil.getSessionFactory().openSession();
                tx = session.beginTransaction();
                fournisseurs = session.createQuery( "from Fournisseur" ).list();
                tx.commit();
                return fournisseurs;
            } catch ( Exception e ) {
                if ( tx != null )
                    tx.rollback();
                return null;
            }
        }
     
    }
    ma servlet:
    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
    package com.project.servlets;
     
    import java.io.IOException;
    import java.util.List;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import com.project.beans.Fournisseur;
    import com.project.service.FournisseurService;
     
    public class SuppressionFournisseur extends HttpServlet {
        public static final String PARAM_ID_FOURNISSEUR = "idFournisseur";
        public static final String VUE                  = "/listeFournisseurs";
     
        private static String getValeurParametre( HttpServletRequest request, String nomChamp ) {
            String valeur = request.getParameter( nomChamp );
            if ( valeur == null || valeur.trim().length() == 0 ) {
                return null;
            } else {
                return valeur;
            }
        }
     
        protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException,
                IOException {
            /* Récupération du paramètre */
            int idFournisseur = Integer.parseInt( getValeurParametre( request, PARAM_ID_FOURNISSEUR ) );
            System.out.println( "++++++++++++++++++++++++++++++++++++++++++++++++++" + idFournisseur );
     
            FournisseurService fs = new FournisseurService();
            List<Fournisseur> fournisseurs = fs.findAll();
            // Si l'id du fournisseur et la liste des fournisseurs ne sont pas vides
            // */
            if ( idFournisseur != 0 && !fournisseurs.isEmpty() ) {
                // Alors suppression du fournisseur de la base de donnée
                System.out.println( "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh" );
                fs.delete( fs.findById( idFournisseur ) );
            }
            /* Redirection vers la fiche récapitulative */
            response.sendRedirect( request.getContextPath() + VUE );
        }
     
        protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException,
                IOException {
            /* À la réception d'une requête POST, simple affichage de liste */
            this.getServletContext().getRequestDispatcher( VUE ).forward( request, response );
        }
     
    }
    merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    j'ai du ajouter des dans ma classe service et ça a fonctionné

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/02/2009, 09h07
  2. Réponses: 6
    Dernier message: 20/07/2007, 14h17
  3. Réponses: 3
    Dernier message: 28/02/2007, 16h21
  4. Réponses: 2
    Dernier message: 13/10/2006, 17h38
  5. Réponses: 4
    Dernier message: 20/07/2006, 17h26

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