我在spring里配置了事务管理,但是事务提交不起作用啊,大神帮我看看错哪里了额
<beanid="sessionFactory"class="org.springframework.orm.hibernate3.LocalSessionFactory...
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<aop:config>
<aop:pointcut id="daoMethods" expression="execution (* com.crm.system.dao.impl.*.*(..))" />
<aop:advisor pointcut-ref="daoMethods" advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*save" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<bean id="menuDao" class="com.crm.system.dao.impl.MenuDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
BeanFactory bf=new ClassPathXmlApplicationContext("applicationContext.xml");
MenuDao md=(MenuDao)bf.getBean("menuDao");
Menu m1=new Menu();
m1.setName("测试");
m1.setChildren(null);
m1.setParent(null);
md.save(m1);
然后执行以上代码的时候,就是保存不了, 数据库一直没数据。用的是mysql,各位帮我看看错在哪里了啊,我查了好多遍没错啊。跪求大神 啊 展开
<property name="configLocation" value="classpath:hibernate.cfg.xml"></property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<aop:config>
<aop:pointcut id="daoMethods" expression="execution (* com.crm.system.dao.impl.*.*(..))" />
<aop:advisor pointcut-ref="daoMethods" advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*save" propagation="REQUIRED" />
<tx:method name="*" read-only="true" />
</tx:attributes>
</tx:advice>
<bean id="menuDao" class="com.crm.system.dao.impl.MenuDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
BeanFactory bf=new ClassPathXmlApplicationContext("applicationContext.xml");
MenuDao md=(MenuDao)bf.getBean("menuDao");
Menu m1=new Menu();
m1.setName("测试");
m1.setChildren(null);
m1.setParent(null);
md.save(m1);
然后执行以上代码的时候,就是保存不了, 数据库一直没数据。用的是mysql,各位帮我看看错在哪里了啊,我查了好多遍没错啊。跪求大神 啊 展开
1个回答
展开全部
你如果配置了事务管理,应该取消了自动事务提交,那么你这个测试代码就要自己提交事务了,不会自动提交的。
追问
什么意思啊, 配置事务管理难道不是让spring来自己提交吗?
我刚刚写了个jsp页面提交数据,也写不进去啊,是咋回事嘞。。
追答
仔细看了一下你的配置,配置的是在com.crm.system.dao.impl包以及子包中的dao中以*save方式命名的方法才会提交事务的。。。你看你操作数据库的方法是否满足条件,不满足的都不会提交。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询