Merci beaucoup de ta réponse rapide. En effet, Benjamin m'avait deja expliqué ce probleme de ne pas modifier des objets de la base... mais je suis pas trop à l'aise avec, je dois avoir un code correct quelque part sinon je te redemande. Merci ! Eric Chatellier a écrit :
Le 17/06/2010 22:59, Sigrid.Lehuta@ifremer.fr a écrit :
Salut,
Salut,
j ai le message d erreur ci-dessous dans ma regle de gestion.
alors le premier soucis j ai pas d idee : can't convert object in matrix Proportion from String: 'org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.Metier#1218467347207#0.08063565015493301)' vous savez ce que c est ???
C'est un message "warning" qu'on a laissé plutôt pour nous, il ne devrait pas te poser de problème.
pour le second est ce que je manipule mal les "collections" ? failed to lazily initialize a collection of role: fr.ifremer.isisfish.entities.SpeciesImpl.population, no session or session was closed Collection <Population> pops = sp.getSpecies().getPopulation();
ERROR|22:28:53,906|LazyInitializationException.java|42|<init>|failed to lazily initialize a collection of role: fr.ifremer.isisfish.entities.SpeciesImpl.population, no session or session was closed org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: fr.ifremer.isisfish.entities.SpeciesImpl.population, no session or session was closed at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380) at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372) at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365) at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108) at org.hibernate.collection.PersistentBag.iterator(PersistentBag.java:272) at rules.MPARuleBRUM_conditionnel_MultiSp.aw$original$_AW_$preAction$_AW_$rules_MPARuleBRUM_conditionnel_MultiSp(MPARuleBRUM_conditionnel_MultiSp.java:502)
En effet, ce problème est assez compliqué a percevoir.
Pour les règles, les modifications que tu fais sont isolées pour le pas de temps courant par un système de transaction.
A la fin du pas de temps, toutes les modification faites sur la base de données par les règles sont annulées.
L'effet désagréable de la chose vient du fait que les objets qui proviennent de la base de données ne peuvent être manipulé que s'il appartiennent à la transaction en cours.
Dans ton cas, le problème est que dans l'init() tu remplit une map "mesStrategies = new HashMap<String, Strategy>();" avec des objets de la base de données.
Et tu y accède dans la pré-action, alors que ce qu'il y a dans cette map est lié à l'init() et non à la transaction du pas de temps actuel :(
Le problème est déjà assez difficile à comprendre, il te faudra peut-être du renfort sur ce problème :)
-- Sigrid LEHUTA ~ ><> ~ Doctorante Département Ecologie et Modèles pour l'Halieutique IFREMER, rue de l'ile d'Yeu BP 21105 44311 Nantes Cedex 03 Tél : +33 (0)2 40 37 41 23 (interne : 8123)