Bonjour a tous,
dans un projet, j'utilise Spring 2.5.4 et hibernate 3.2.5. jdk 1.4.
mon problème est la gestion des sessions avec hibernate
je récupere en db une personne
je remonte l'info dans un formulaire updatePerson.jsp
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 public class Person { private String lastName; private String firstName; private Date birthDate; ... private Set telephone; } public class Telephone { private int number; private String type; .... } public class PersonDaoImpl extends HibernateDaoSupport implements PersonDao { public Person getOneById (int personId) { return getSession().createCriteria(Person.class).add (Restrictions.eq("personId",personId)).uniqueResult(); } }
ou je n'affiche que quelque info modifiable + id personne
lorsque je fait un submit, dans mon controller spring je récupere la Personne via son id
je modifie les infos updatée
ensuite je sauvegarde les donnée en db via cette méthode
et la j'ai un exeption
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public void saveOrUpdate (Person person) { getSession().saveOrUpdate(person); }
org.springframework.orm.hibernate3.HibernateSystem Exception: Illegal attempt to associate a collection with two open sessions;
j'ai essayé de modifer ma méthode save or update de cette façon
sans succès
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Session session = getSession(); session.evict(person); session.saveOrUpdate(person);
car mon objet se trouve dans la session crée lors du getPersonById et non celle que j'utilise dans mon saveOrUpdate
comment faut il faire pour garder la même session hibernate pour chaque appelle client/serveur ?
est ce que ma façons d'écrire les dao est correcte ?
Partager