`
wbj0110
  • 浏览: 1603493 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from tr

阅读更多

Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AU

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.
at

org.springframework.orm.hibernate3.HibernateTemplate.checkWriteOper

ationAllowed(HibernateTemplate.java:1095)

这个异常产生的主要原因是DAO采用了Spring容器的事务管理策略,如果操作方法的名称和事务策略中指定的被管理的名称不能够匹配上,spring 就会采取默认的事务管理策略(PROPAGATION_REQUIRED,read only).如果是插入和修改操作,就不被允许的,

 

所以我们需要在spring-application.xml的配置文件中加上对事物的控制的配置:

[html] view plaincopy
 
  1. <tx:advice id="transactionAdvice" transaction-manager="transactionManager">  
  2.         <tx:attributes>  
  3.             <tx:method name="save*" propagation="REQUIRED" />  
  4.             <tx:method name="read*" read-only="true" />  
  5.             <tx:method name="list*" read-only="true" />  
  6.             <tx:method name="delete*" propagation="REQUIRED" />  
  7.             <tx:method name="modify*" propagation="REQUIRED" />  
  8.             <tx:method name="*" propagation="REQUIRED" />  
  9.         </tx:attributes>  
  10.     </tx:advice>  
  11. <aop:config>  
  12.     <aop:pointcut expression="execution(* com.dg11185.support.service..*(..))"  
  13.             id="busPointcut" />  
  14.     <aop:advisor advice-ref="transactionAdvice" pointcut-ref="busPointcut" />  
  15. </aop:config>  
  16.  
分享到:
评论

相关推荐

    Open_Session_In_View详解.doc

    Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly' marker from transaction definition ``` 这个问题通常是由于在`Open ...

    hibernate错误解决方案

    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引起的错误

    session.setFlushMode(FlushMode.AUTO); ``` 2. **显式调用flush()**:如果你确定某些地方需要立即同步到数据库,可以在代码中显式调用`Session.flush()`。 ```java session.flush(); ``` 3. **使用...

    HIbernate Session 详解

    - **FlushMode.COMMIT**:在提交事务时清理缓存。 - **FlushMode.NEVER**:永不自动清理缓存,只有显式调用 `flush()` 方法才会清理缓存。 无论设置为何种清理模式,显式调用 `session.flush()` 都会导致缓存被清理...

    Struts1.x Spring2.x Hibernate3.x DWR2.x整合工具文档v1.00

    &lt;param-name&gt;flushMode&lt;/param-name&gt; &lt;param-value&gt;AUTO&lt;/param-value&gt; &lt;/init-param&gt; &lt;/filter&gt; &lt;filter-name&gt;openSessionInViewFilter&lt;/filter-name&gt; &lt;url-pattern&gt;/*&lt;/url-pattern&gt; &lt;/filter-mapping&gt; ``` ...

    如何解决hibernate自动更新实体类的问题共5页.pd

    4. **控制Flush模式**:可以设置`Session`的flush模式,如`FlushMode.NEVER`表示永不flush,`FlushMode.MANUAL`表示手动flush。但请注意,过度使用可能会导致数据一致性问题。 5. **显式调用update()或saveOrUpdate...

    hibernate二级缓存

    例如,`FlushMode.NEVER`表示从不自动刷新,`FlushMode.AUTO`则会在某些操作后自动刷新。 在工程示例中,`FlushMode.doc`可能详细介绍了各种FlushMode的使用场景和效果,而`2级缓存.doc`应该包含了二级缓存的配置和...

    hibernate提升性能

    例如,`Session.flushMode()`和`Session.setBatchSize()`方法。 2. 延迟加载:Hibernate的懒加载机制可以降低内存消耗,但过多的延迟加载可能导致大量小查询,增加数据库压力。合理设计实体关系,适时使用立即加载...

    快速了解Hibernate中的Session

    - Transaction的`commit()`调用:在提交事务前,若设置为`FlushMode.COMMIT`或`AUTO`,Session会先清除缓存,再执行SQL提交事务。 - 查询操作:`find()`或`iterate()`时,如果对象属性有变动,会先清理缓存以更新...

    Hibernate中文教程

    - 如:设置`setFlushMode(FlushMode.COMMIT)`来控制批量提交行为。 5. **性能优化** - 包括索引优化、查询优化等多方面。 - 使用Hibernate提供的工具和技术来提升应用的整体性能。 #### 五、实战案例 - **用户...

    HibernateBatchUpdateExample

    除了这种方式,还可以使用Query或Criteria API的`setFlushMode(FlushMode.MANUAL)`来手动控制批处理。或者,如果你需要更底层的控制,可以使用`Session`的`doWork()`方法直接执行SQL批处理。 在`...

    Hibernate中Criteria的完整用法

    7. **`FlushMode`**:用于指定会话何时刷新数据到数据库。 8. **`LockMode`**:用于指定获取数据时的锁定级别,如`READ`和`WRITE`。 #### 三、使用示例 ##### 1. 创建基本的`Criteria` ```java Session sess = ...

    spring_demo:Spring MVC示范项目

    Spring MVC Hibernate Demo Hibernate 配置 数据库实体必须设置以下注解 @Entity @Id 自增主键必须设置以下注解,否则报错 @GeneratedValue(strategy = GenerationType.IDENTITY) ... &lt;param&gt;flushMode&lt;/param-nam

    Criteria的完整用法.pdf

    - **FlushMode**:`Criteria`还允许设置`FlushMode`,控制何时将缓冲区中的更改同步到数据库,影响事务管理。 #### 三、实战案例 1. **创建Criteria实例** ```java Session session = HibernateUtil....

    Hibernate_demo

    4. 对于大数据量的操作,考虑使用批处理,如Session的flushMode和 batchSize属性。 总结,"Hibernate_demo"是一个生动的实例,展示了如何在实际项目中运用Hibernate5。通过分析这个项目,我们可以更好地理解和掌握...

    hibernate简单实例

    - 使用批处理:通过`flushMode`和`batch-size`设置,可以批量处理多个操作,提高效率。 - 只获取必要的数据:避免加载整个实体,使用`select new`构造函数或`fetch`属性限制关联关系的加载。 - 利用缓存:根据...

    Hibernate中Criteria的使用

    Criteria 和 DetachedCriteria 都可以使用Criterion 和 Projection 设置查询条件,可以设置 FetchMode(联合查询抓取的模式)、设置排序方式,对于 Criteria 还可以设置 FlushMode(冲刷 Session 的方式)和 ...

    hibernate中文参考手册

    4. **会话管理**:Hibernate的Session提供了beginTransaction、commit和rollback方法,用于处理事务。Session的save、update和delete方法用于对象的持久化操作。FlushMode和CacheMode则控制了Session何时将数据同步...

    HIBERNATE FOR NETBEANS 数据操作方法

    - 使用批处理操作,通过`Session`的`flushMode`和` batchSize`设置优化性能。 通过以上步骤,你可以在NetBeans中高效地利用Hibernate进行数据操作。这个过程简化了数据库操作,使得开发者可以专注于业务逻辑,而...

Global site tag (gtag.js) - Google Analytics