技术:三大框架
错误信息:org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.
错误原因:新建的service类和配置文件中配置的service类的路径不一致
- <!-- 事务的配置 -->
- <!-- sessionFactory 为自己配置 sessionFactory 的 bean-->
- <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>
- <aop:config>
- <!-- execution(public * *.*.*..*.*(..)) 为自己项目中操作数据库中的方法 -->
- <aop:pointcut id="**" expression="execution(public * *.*.*..*.*(..))" />
- <aop:advisor pointcut-ref="**" advice-ref="txAdvice" />
- <!-- 可以设置两个pointcut,id不能相同 -->
- <aop:pointcut id="**" expression="execution(public * *.*.*..*.*(..))" />
- <!-- 同时将第二个pointcut 也关联 txAdvice -->
- <aop:advisor pointcut-ref="**" advice-ref="txAdvice" />
- </aop:config>
- <tx:advice id="txAdvice" transaction-manager="txManager">
- <tx:attributes>
- <!-- name 为 方法名 -->
- <tx:method name="**" read-only="true" />
- <tx:method name="**" propagation="REQUIRED" />
- </tx:attributes>
- </tx:advice>
<!-- 事务的配置 -->
<!-- sessionFactory 为自己配置 sessionFactory 的 bean-->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<aop:config>
<!-- execution(public * *.*.*..*.*(..)) 为自己项目中操作数据库中的方法 -->
<aop:pointcut id="**" expression="execution(public * *.*.*..*.*(..))" />
<aop:advisor pointcut-ref="**" advice-ref="txAdvice" />
<!-- 可以设置两个pointcut,id不能相同 -->
<aop:pointcut id="**" expression="execution(public * *.*.*..*.*(..))" />
<!-- 同时将第二个pointcut 也关联 txAdvice -->
<aop:advisor pointcut-ref="**" advice-ref="txAdvice" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<!-- name 为 方法名 -->
<tx:method name="**" read-only="true" />
<tx:method name="**" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
本文详细解析了Spring框架中事务管理的配置方法,包括如何通过AOP实现对数据库操作的事务控制,以及如何正确配置读写操作以避免InvalidDataAccessApiUsageException异常。
1174

被折叠的 条评论
为什么被折叠?



