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.

org.springframework.dao.InvalidDataAccessApiUsageException: 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.

出现这个错误,大概意思是说,此时是不允许写操作的,


org.springframework.dao.InvalidDataAccessApiUsageException: 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.
	at org.springframework.orm.hibernate4.HibernateTemplate.checkWriteOperationAllowed(HibernateTemplate.java:1135)
	at org.springframework.orm.hibernate4.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:620)
	at org.springframework.orm.hibernate4.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:617)
	at org.springframework.orm.hibernate4.HibernateTemplate.doExecute(HibernateTemplate.java:340)
	at org.springframework.orm.hibernate4.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:308)
	at org.springframework.orm.hibernate4.HibernateTemplate.save(HibernateTemplate.java:617)
	at springMVC.NLoveB.dao.impl.LoginOrRegisterImpl.register(LoginOrRegisterImpl.java:51)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)

不允许写操作

以上错误信息中的这个类.方法

springMVC.NLoveB.dao.impl.LoginOrRegisterImpl.register

是我自己写的,很明显是一个dao层

在spring种,dao层是由spring的事物管理的


我们再来看看我们的事务配置信息

以下代码是我配置的事物管理部分代码

<!-- 以下开始配置事务管理 -->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
	<tx:attributes>
	    <tx:method name="update*" propagation="REQUIRED"/>
	    <tx:method name="insert*" propagation="REQUIRED"/>
	    <tx:method name="save*" propagation="REQUIRED"/>
	    <tx:method name="delete*" propagation="REQUIRED"/>
	    <tx:method name="add*" propagation="REQUIRED" />
	</tx:attributes>
</tx:advice>
那么错误就很明显了

为的dao层的类里面的 register这个注册方法名是不正确的 ,我可以更改为 saveregister

这个错误显然是忘记了事务的配置了


爆款云服务器s6 2核4G 低至0.46/天,具体规则查看活动详情Blog Img