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 ??? 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(); MERCI d avance WARN|22:28:53,812|MatrixType.java|227|splitObjects|Continuing but can't convert object in matrix Proportion from String: 'org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.Metier#1218467347207#0.08063565015493301)' 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) at rules.MPARuleBRUM_conditionnel_MultiSp_1__1556553279__240354642___AW_JoinPoint.proceed(Unknown Source) at fr.ifremer.isisfish.aspect.RuleAspect.makeTimedCall(RuleAspect.java:119) at fr.ifremer.isisfish.aspect.RuleAspect.initPreCall(RuleAspect.java:84) at rules.MPARuleBRUM_conditionnel_MultiSp_1__1556553279__240354642___AW_JoinPoint.proceed(Unknown Source) at rules.MPARuleBRUM_conditionnel_MultiSp_1__1556553279__240354642___AW_JoinPoint.invoke(Unknown Source) at rules.MPARuleBRUM_conditionnel_MultiSp.preAction(MPARuleBRUM_conditionnel_MultiSp.java) at simulators.DefaultSimulator.simulate(DefaultSimulator.java:203) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher.localSimulateSameThread(InProcessSimulatorLauncher.java:392) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher$SimThread.run(InProcessSimulatorLauncher.java:259) ERROR|22:28:53,906|InProcessSimulatorLauncher.java|428|localSimulateSameThread|Error during simulation 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) at rules.MPARuleBRUM_conditionnel_MultiSp_1__1556553279__240354642___AW_JoinPoint.proceed(Unknown Source) at fr.ifremer.isisfish.aspect.RuleAspect.makeTimedCall(RuleAspect.java:119) at fr.ifremer.isisfish.aspect.RuleAspect.initPreCall(RuleAspect.java:84) at rules.MPARuleBRUM_conditionnel_MultiSp_1__1556553279__240354642___AW_JoinPoint.proceed(Unknown Source) at rules.MPARuleBRUM_conditionnel_MultiSp_1__1556553279__240354642___AW_JoinPoint.invoke(Unknown Source) at rules.MPARuleBRUM_conditionnel_MultiSp.preAction(MPARuleBRUM_conditionnel_MultiSp.java) at simulators.DefaultSimulator.simulate(DefaultSimulator.java:203) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher.localSimulateSameThread(InProcessSimulatorLauncher.java:392) at fr.ifremer.isisfish.simulator.launcher.InProcessSimulatorLauncher$SimThread.run(InProcessSimulatorLauncher.java:259) INFO|22:28:54,046|InProcessSimulatorLauncher.java|458|localSimulateSameThread|Simulation time: 53.228
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 :) -- Éric <chatellier@codelutin.com> Tel: 02 40 50 29 28 http://www.codelutin.com
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)
On Thu, 17 Jun 2010 22:59:45 +0200 Sigrid.Lehuta@ifremer.fr wrote: Salut,
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();
En fait, pour ruser un peu tu peux forcer le chargement des populations durant l'init. Comme elles seront deja chargees, il n'y aura pas d'exception de lazy loading. Donc dans ton init, il faut que tu appelles "sp.getSpecies().getPopulation();" meme si tu n'en as pas besoin. Ce qui le chargera pour plus tard. Par contre il faut etre certain qu'il n'y ait pas de regles qui modifient ta population car du coup tu n'auras pas les bonnes donnees :(. -- Benjamin -------------------- tél: +33 (0) 2 40 50 29 28 email: poussin@codelutin.com () campagne du ruban ascii http://www.codelutin.com /\ pour les mails en ascii
participants (4)
-
Benjamin POUSSIN -
Eric Chatellier -
Sigrid LEHUTA -
Sigrid.Lehuta@ifremer.fr