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 :

2 sessions ouvertes en utilisant un GenericDao et un proxy


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Par défaut 2 sessions ouvertes en utilisant un GenericDao et un proxy
    Bonjour à tous .
    Quand je find un element et que je tente de faire un update il me renvoie cet erreur :Illegal attempt to associate a collection with two open sessions
    Voici ma configurartion:
    genericDao
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public interface GenericDao<T, PK extends Serializable> {    
       PK save(T newInstance);
       T findById(PK id);
       List<T> findAll();
        void update(T transientObject);
        void remove(T persistentObject);
        void saveOrUpdate(T object);
    }
    genericdaoImpl
    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
    public class GenericDaoImpl<T, PK extends Serializable> implements GenericDao<T, PK> {
       @Autowired
       private SessionFactory sessionFactory;
      private Class<T> type;
        public GenericDaoImpl() {
          super();
       }
     
       public void saveOrUpdate(T o) {
              getSession().saveOrUpdate(o);
       }
        public GenericDaoImpl(Class<T> type) {
            this.type = type;
        }
     
       public PK save(T o) {
           return (PK) getSession().save(o);
        }
     
       public T findById(PK id) {
            return (T) getSession().get(type, id);
        }
     
       public List<T> findAll() {
            Criteria crit = getSession().createCriteria(type);
            crit.add(Restrictions.eq("enabled", new Boolean(true)));
            return crit.list();
        }
     
        public void update(T o) {
              getSession().update(o);
        }
     
        public void merge(T o) {
          getSession().merge(o);
        }
     
       public void remove(T o) {
            getSession().delete(o);
        }
     
        public Session getSession() {
            boolean allowCreate = true;
            return SessionFactoryUtils.getSession(sessionFactory, allowCreate);
        }
     
        public void setSessionFactory(SessionFactory sessionFactory) {
            this.sessionFactory = sessionFactory;
        } 
    }
    et ma classe service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Transactional
    @Service("SfdService")
    public class SfdServiceImpl extends GenericDaoImpl<Sfd, Integer>implements SfdService,Serializable{
       public SfdServiceImpl(Class<Sfd> type) {
          super(type);
       }
       public SfdServiceImpl() {
          super();
       }
    }
    Quand je fais cette commande :
    Sfd sfd=sfdService.findById(1);
    sfd.setNom("changeName");
    sfdService.save(sfd);

    J'ai l'erreur "org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions"

    Je suspecte ma "getsession" parceque je crois qu'il cree une nouvelle session à chaque appel.

    Pouvez vous m'aidez SVP!

  2. #2
    Membre éclairé Avatar de amadoulamine1
    Inscrit en
    Avril 2005
    Messages
    260
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 260
    Par défaut
    C'est bon finalement j'ai pu le resoudre en ajoutant les jointures
    cririteria.createAlias(attribut, attribut, CriteriaSpecification.LEFT_JOIN);
    vu que le type de chargement etait lazy !!!

    Merc tout de meme

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

Discussions similaires

  1. récupérer le nbr de sessions ouverts sur mon site
    Par lehic dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 05/06/2006, 19h59
  2. Session ouverte sans mot de passe
    Par BnA dans le forum Web
    Réponses: 4
    Dernier message: 09/05/2006, 11h04
  3. Réponses: 2
    Dernier message: 05/04/2006, 15h25
  4. Recup le nom de la session ouverte
    Par Aurèl90 dans le forum Access
    Réponses: 5
    Dernier message: 09/12/2005, 10h09
  5. PB Réseau sur les sessions ouvertes ?
    Par nico___23 dans le forum Développement
    Réponses: 1
    Dernier message: 07/01/2005, 09h50

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