[Spring & Hibernate] Gestion des sessions Hibernate
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
Code:
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();
}
} |
je remonte l'info dans un formulaire updatePerson.jsp
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
Code:
1 2 3 4
|
public void saveOrUpdate (Person person) {
getSession().saveOrUpdate(person);
} |
et la j'ai un exeption
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
Code:
1 2 3 4
|
Session session = getSession();
session.evict(person);
session.saveOrUpdate(person); |
sans succès
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 ?