Bonjour,
Suite à un bug de stock chez un client, je me suis rendu compte que si ma mise à jour de stock est faite par 2 personnes ( donc 2 navigateur et poste differents ) , je me retrouve avec des chiffres completement abhérant.
Mon projet est en spring + hibernate et se base sur une sortie typique d'un site web avec du JSP.
Mon controller appelle un manager qui utilise bien un transaction manager
Dans mon service je fait plusieurs chose avant d'apeller la méthode de mon Dao qui me pause problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <bean id="proxyService" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> <property name="transactionManager" ref="transactionManager" /> <property name="transactionAttributes"> <props> <prop key="*">PROPAGATION_REQUIRED</prop> </props> </property> </bean>
J'ai fait des 10 aines de possibilité , mais rien n'y change.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public Articles doUpdateOrInsertWithFlush(Articles dobjet, Integer add) { this.getHibernateTemplate().flush(); this.getHibernateTemplate().refresh(dobjet); dobjet.setStock_reel(dobjet.getStock_reel().intValue()+add.intValue()); this.getHibernateTemplate().saveOrUpdate(dobjet); this.getHibernateTemplate().flush(); return dobjet; }
Pour le mapping.
Donc concretement , lors du lancement il lui prend de récupérer la valeur qu'avait l'article pendant le traitement que fait l'autre utilisateur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <hibernate-mapping> <class lazy="true" name="alce.beans.db.Articles" table="articles" dynamic-update="true"> <id name="art_id" type="int"> <generator class="native"/> </id> <property name="date_create"/> <property name="stock_reel" type="java.lang.Integer"/> </class>
J'aimerais le forcer a se mettre a jour automatiquement, a chaque fois qu'il entre et sort de cette fonctionnalité.
Je serais infiniment reconnaissant a celui qui réussira a m'aider dans mon problème.
Partager