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:
Illegal attempt to associate a collection with two open sessions
ma classe Fournisseur:
Code:
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:
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:
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