Bonjour à tous,
Après avoir expliqué mon problème sur le forum hibernate et n'ayant toujours pas de réponses, je me dis que le problème viens peut-être de mon utilisation de HibernateTemplate. Je m'en remet donc à vous..
J'ai les objets suivants :
- 'Resource(String url, Set<Role> roles)'
- 'Role(String name)'
Une 'Resource' contient un Set de 'Role's. Un 'Role' n'a aucune référence sur les 'Resource's mais peut-être utilisé par plusieurs 'Resource's.
Tout se passe bien lorsque je sauve une 'Resource' et lorsque je sauve un 'Role'.
Lorsque je fais l'association 'maResource.addRole(unRole)' et que je sauve, tout semble se passer correctement également sauf que ma table de relation reste vide.
Si j'ajoute un nouveau (non sauvé) 'Role' pour une 'Resource' et que je sauve cette 'Resource' le 'Role' n'est pas sauvé.
La console ne me dis rien d'autre que du debug, mes tables sont bien créées par Hibernate avec les bonnes colonnes. Je ne vais vraiment pas ou est mon erreur.
Tous mes daos étendent la même classe qui étend elle-même HibernateTemplate et dont voici les méthodes :
> Et mon code de test (chargement, etc..)
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 public PK save(T object) throws DataAccessException { logger.debug("Saving %s '%s'.", type.getSimpleName(), object); PK key = (PK) getHibernateTemplate().save(object); logger.debug("Object '%s' saved as %s with key '%s'.", object, type.getSimpleName(), key); return key; } /** * Retrieve an object that was previously saved to the storage using the * indicated key as primary key. * @throws <tt>be.gervaisb.sics.exceptions.DataAccessException</tt> */ @SuppressWarnings("unchecked") public T get(PK key) throws DataAccessException { logger.debug("Getting %s with key '%s'.", type.getSimpleName(), key); T object = (T) getHibernateTemplate().get(type, key); getHibernateTemplate().flush(); logger.debug("Return '%s' as %s for key '%s'", object, type.getSimpleName(), key); return object; } /** Save changes made to an object * @throws <tt>be.gervaisb.sics.exceptions.DataAccessException</tt> */ public void update(T object) throws DataAccessException { logger.debug("Updating %s '%s'.", type.getSimpleName(), object); getHibernateTemplate().update(object); getHibernateTemplate().flush(); }
Le fichier de log est en attachement.
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 public static void main(String[] args) { org.springframework.core.io.Resource resource = new FileSystemResource("./src/daoContext.xml"); BeanFactory factory = new XmlBeanFactory(resource); DaoFactory daoFactory = (DaoFactory) factory.getBean("daoFactory"); System.out.println("\n\n\n DEBUT \n\n\n"); Resource login = new Resource("login.html"); daoFactory.getResourcesDao().save(login); System.out.println("Login saved \n\n"); Role roleAnon = new Role("Anonymous"); daoFactory.getRoleDao().save(roleAnon); System.out.println("Role saved \n\n"); roleAnon = daoFactory.getRoleDao().get("Anonymous"); login = daoFactory.getResourcesDao().get("login.html"); System.out.println("Objects reloaded \n\n"); login.addRole(roleAnon); daoFactory.getResourcesDao().update(login); System.out.println("\n\n Get the resource :\n\t"+daoFactory.getResourcesDao().get("login.html")); }
Si l'un d'entre vous à une idée sur la cause de mon problème.. Merci
Pour ceux qui en voudraient plus encore, la discussion originelle est ici : http://www.developpez.net/forums/sho...d.php?t=552065
Merci
Partager