[color=red][b]异常:Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.[/b][/color]
web.xml内容:
spring事件配置如下:
Service中是这样的:
在运行到createAdmin方法中的adminDao.insertAdmin(admin);时就报异常。
[color=red][b]解决方法:[/b][/color]
将createAdmin方法配置到spring的事件中管理,添加了以下的一条配置
具体spring事件配置如下:
呵呵!问题就这样简单的解决了!不知道我们碰到的问题是否一样!
web.xml内容:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>spring事件配置如下:
<aop:config>
<aop:pointcut id="txServices" expression="execution(* com.cnlive.dms.service..*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txServices"/>
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>Service中是这样的:
@Override
public boolean createAdmin(Admin admin) {
// TODO Auto-generated method stub
Admin ad=adminDao.getAdminByUsername(admin.getUsername());
if(ad==null){
adminDao.insertAdmin(admin);
return true;
}
return false;
}
在运行到createAdmin方法中的adminDao.insertAdmin(admin);时就报异常。
[color=red][b]解决方法:[/b][/color]
将createAdmin方法配置到spring的事件中管理,添加了以下的一条配置
<tx:method name="create*" propagation="REQUIRED"/>具体spring事件配置如下:
<aop:config>
<aop:pointcut id="txServices" expression="execution(* com.cnlive.dms.service..*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="txServices"/>
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="insert*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="create*" propagation="REQUIRED"/>
</tx:attributes>
</tx:advice>呵呵!问题就这样简单的解决了!不知道我们碰到的问题是否一样!
本文介绍了一种在使用Spring和Hibernate框架时遇到的异常“Writeoperationsarenotallowedinread-onlymode”的解决办法。通过调整Spring的事务管理配置,将特定的方法纳入到事务管理中,从而避免了在视图中进行写操作时出现的错误。
826

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



