如何修改spring源码

如何修改spring源码

问题描述:

小弟刚学ssh没多久,做一个ssh的小运用当热手,但是使用spring管理事务之后加入了OpenSessionInViewFilter,批量操作删除的时候,却报错:ERROR - Servlet.service() for servlet default threw exception

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition



在网上搜了下,需要修改spring的OpenSessionInViewFilter类的getsession()和closesession()方法才行,但是spring的源码却找不到在哪个位置.

我应该怎么做呢,请大家指教?



不胜感激!!!

这不是spring的问题,应该是你那里设置错了。
我也经常遇见这种问题,分析一下操作过程中的事物状态,很好解决的。
ps:我一般事务代理喜欢用申明式事务,我方法起名都不规范。

事务配置是用的readOnly.....
你大概某个方法名起错了.

你的批量删除的方法是readOnly的,只能做查询.
可以在配置文件中找到事务代理TransactionProxyFactoryBean的属性transactionAttributes下的
[code="java"]


PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,-Exception

PROPAGATION_REQUIRED,readOnly



[/code]
把你对应的方法的值的readOnly去掉