bonjour, j'ai essayé ça mais je n'arrive toujours pas à tourner des simulations avec la règle changement des paramètres contolable. peut être j'ai pas bien fait les modifications. . pourriez-vous m'envoyer le nouveu script courrigé? merci bien pour l'avance. chirine ----- Message d'origine ---- De : Éric Chatellier <chatellier@codelutin.com> À : Liste pour les développeurs du simulateur <isis-fish-devel@lists.labs.libre-entreprise.org> Envoyé le : Lundi, 15 Décembre 2008, 15h53mn 04s Objet : [Isis-fish-devel] Problème de transaction hibernate (règle changement des paramètres contrôlabes) Bonjour, Voici l'erreur qu'avait rencontré chirine. Erreur que j'arrive à reproduire avec les script originaux. chirine HUSSEIN a écrit :
ERROR [SimThread 2008-11-24-10-19] (SimulationHelper.java:505) localSimulateSameThread - Error during simulation fr.ifremer.isisfish.IsisFishRuntimeException: org.codelutin.topia.TopiaException: org.hibernate.HibernateException: Found shared references to a collection: fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.zone at fr.ifremer.isisfish.entities.FisheryRegionImpl.getStrategy(FisheryRegionImpl.java:201) at rules.ChangementParamControlablePresimu_Chirine.init(ChangementParamControlablePresimu_Chirine.java:144) at simulators.DefaultSimulator.simulate(DefaultSimulator.java:113) at fr.ifremer.isisfish.simulator.SimulationHelper.localSimulateSameThread(SimulationHelper.java:475) at fr.ifremer.isisfish.simulator.SimulationHelper$SimThread.run(SimulationHelper.java:385) Caused by: org.codelutin.topia.TopiaException: org.hibernate.HibernateException: Found shared references to a collection: fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.zone at org.codelutin.topia.persistence.hibernate.TopiaDAOHibernate.findAll(TopiaDAOHibernate.java:119) at fr.ifremer.isisfish.entities.StrategyDAOAbstract.findAll(StrategyDAOAbstract.java:40) at fr.ifremer.isisfish.entities.FisheryRegionImpl.getStrategy(FisheryRegionImpl.java:198) ... 4 more Caused by: org.hibernate.HibernateException: Found shared references to a collection: fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.zone at org.hibernate.engine.Collections.processReachableCollection(Collections.java:163) at org.hibernate.event.def.FlushVisitor.processCollection(FlushVisitor.java:37) at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:101) at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:61) at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:55) at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:138) at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196) at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76) at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35) at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1562) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283) at org.codelutin.topia.persistence.hibernate.TopiaDAOHibernate.findAll(TopiaDAOHibernate.java:115) ... 6 more INFO [SimThread 2008-11-24-10-19] (SimulationHelper.java:574) localSimulateSameThread - Simulation time: 1.848 --- Cache Statistiques --- Total call: 9 Cache used: 1 Cache usage: 11% --------------------
Exception in thread "SimThread 2008-11-24-10-19" fr.ifremer.isisfish.simulator.SimulationException: Error during simulation at fr.ifremer.isisfish.simulator.SimulationHelper.localSimulateSameThread(SimulationHelper.java:507) at fr.ifremer.isisfish.simulator.SimulationHelper$SimThread.run(SimulationHelper.java:385) Caused by: fr.ifremer.isisfish.IsisFishRuntimeException: org.codelutin.topia.TopiaException: org.hibernate.HibernateException: Found shared references to a collection: fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.zone at fr.ifremer.isisfish.entities.FisheryRegionImpl.getStrategy(FisheryRegionImpl.java:201) at rules.ChangementParamControlablePresimu_Chirine.init(ChangementParamControlablePresimu_Chirine.java:144) at simulators.DefaultSimulator.simulate(DefaultSimulator.java:113) at fr.ifremer.isisfish.simulator.SimulationHelper.localSimulateSameThread(SimulationHelper.java:475) ... 1 more Caused by: org.codelutin.topia.TopiaException: org.hibernate.HibernateException: Found shared references to a collection: fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.zone at org.codelutin.topia.persistence.hibernate.TopiaDAOHibernate.findAll(TopiaDAOHibernate.java:119) at fr.ifremer.isisfish.entities.StrategyDAOAbstract.findAll(StrategyDAOAbstract.java:40) at fr.ifremer.isisfish.entities.FisheryRegionImpl.getStrategy(FisheryRegionImpl.java:198) ... 4 more Caused by: org.hibernate.HibernateException: Found shared references to a collection: fr.ifremer.isisfish.entities.MetierSeasonInfoImpl.zone at org.hibernate.engine.Collections.processReachableCollection(Collections.java:163) at org.hibernate.event.def.FlushVisitor.processCollection(FlushVisitor.java:37) at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:101) at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:61) at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:55) at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:138) at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:196) at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76) at org.hibernate.event.def.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:35) at org.hibernate.impl.SessionImpl.autoFlushIfRequired(SessionImpl.java:969) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1562) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283) at org.codelutin.topia.persistence.hibernate.TopiaDAOHibernate.findAll(TopiaDAOHibernate.java:115) ... 6 more INFO [Simulation Thread local] (SimulationDoneQueueModel.java:92) simulationWillBeRemoved - in done model for 2008-11-24-10-19 pos 0
L'erreur vient je pense d'un conflit d'entité hibernate issue de 2 transaction différentes. Les paramètres d'une règles sont récupérer dans une première transaction. La règle est exécutée dans une autre (init(SimulationContext)). Il faudrait peut-être que les paramètres et l'exécution soit dans la même transaction. (actuellement, ce n'est pas simple). Donc, si dans la méthode init() on charge un objet qui a le même topiaId qu'un des paramètres, il y a une exception. J'ai testé, juste avant l'appel à init() de mettre les topiaId des tous les paramètres à null, ça fonctionne. C'est pas une solution, mais c'est l'astuce la plus rapide... -- Éric <chatellier@codelutin.com> Tel: 02 40 50 29 28 http://www.codelutin.com _______________________________________________ Isis-fish-devel mailing list Isis-fish-devel@lists.labs.libre-entreprise.org http://lists.labs.libre-entreprise.org/mailman/listinfo/isis-fish-devel