报错:org.hibernate.exception.GenericJDBCException: Connection is read-only. Queries leading to data modification are not allowed
原因:
spring-config.xml文件
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="add*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="create*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="merge*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="del*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="remove*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="put*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="use*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="get*" propagation="REQUIRED" read-only="true" rollback-for="Exception"/>
<tx:method name="count*" propagation="REQUIRED" read-only="true" rollback-for="Exception"/>
<tx:method name="find*" propagation="REQUIRED" read-only="true" rollback-for="Exception"/>
<tx:method name="list*" propagation="REQUIRED" read-only="true" rollback-for="Exception"/>
<tx:method name="*" read-only="true" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<aop:config expose-proxy="true">
<aop:pointcut id="txPointcut" expression="execution(* com.xxx..service..*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>
</aop:config>
service里面有参与事务的方法没有按以上的规则来命名,而以上配置文件规定了数据库操作函数必须要以上面的字符串开头,否则的话就按照默认的配置,对数据库访问的权限为read-only。而我的service方法里面有对数据进行update的操作,所以就报了上面的错。
解决办法:修改service里面方法的名字,改为符合配置文件的规则。
当然也可以把read-only="true"去掉,担不推荐这种做法
分享到:
相关推荐
本案例重点探讨了Spring如何与两种流行的数据访问技术——JDBC(Java Database Connectivity)和Hibernate——相结合,进行事务管理。事务控制是确保数据库操作一致性、完整性的关键,尤其在多步骤操作中,它能防止...
在Java开发中,Spring框架和Hibernate是两个非常重要的组件,它们分别用于依赖注入和对象关系映射。在实际项目中,事务管理是确保数据一致性的重要环节。本篇将详细介绍如何在Spring 3和Hibernate 4中配置声明式事务...
在这个例子中,`addUser`方法会被Spring自动包裹在一个事务中,如果方法执行过程中发生异常,事务会回滚;否则,当方法执行完毕,事务会被提交。 **六、hibernate.cfg.xml配置** 在Hibernate的配置文件中,可以设置...
### Struts2、Spring与Hibernate综合知识点解析 #### 一、Struts2框架起源与特性 Struts2框架,作为Web开发领域的佼佼者,源自于两大先驱框架——WebWork与XWork的发展。WebWork2是建立在XWork基础之上的,它充分...
在Spring框架中,AOP(面向切面编程)被广泛用于事务管理,特别是与ORM(对象关系映射)框架如Hibernate结合使用时。本篇文章将深入探讨如何在Spring AOP中实现Hibernate事务管理,以及这一过程中的关键概念和技术...
Spring Boot Documentation 1. About the Documentation 2. Getting Help 3. First Steps 4. Working with Spring Boot 5. Learning about Spring Boot Features 6. Moving to Production 7. Advanced Topics II. ...
**Hibernate 是一个强大的Java持久化框架,用于管理数据库对象与Java对象之间的映射关系。它极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库事务。本篇将围绕“Hibernate的jar包”这一主题,...
在本例中,我们将结合Spring MVC与SimpleJdbcDaoSupport进行数据库操作,实现数据的增删改查功能。 **一、Spring MVC 概述** 1. **核心组件**:DispatcherServlet负责请求分发,Controller处理请求,Model存储数据...
同时,在Spring的配置文件中创建Hibernate的`SessionFactory`,并设置相关属性: ```xml <!– 配置Hibernate SessionFactory –> <bean id="sessionFactory" class="org.springframework.orm.hibernate3....
它是J2EE项目中常用的ORM(Object Relational Mapping,对象关系映射)解决方案之一,可以将对象模型与关系型数据库模型之间的转换自动化处理,从而大大提高了开发效率。 ##### 2.1 Hibernate的优势 - **代码简洁*...
在大型项目中,这通常会与Spring框架集成,利用其声明式事务管理功能。 在项目中,还需要注意优化配置,比如缓存策略、批处理大小、连接池设置等,以提高性能。例如,使用二级缓存可以显著提升读取效率: ```xml ...
**JDBC与Hibernate事务详解** 在Java开发中,数据库事务管理是确保数据一致性、完整性和原子性的重要机制。本讲解将深入探讨JDBC(Java Database Connectivity)和Hibernate两种不同的技术在处理事务时的方法和特点...
事务管理是数据库操作的核心,涉及原子性、一致性、隔离性和持久性四大特性,以及不同隔离级别下可能出现的问题和解决方案。本文将详细探讨Hibernate中的事务管理机制及其应用。 【正文】: 1. 事务的四大特性...
为了避免与中文字段产生混淆,在后续的代码示例中,我们将直接使用英文字段名称。 定义实体类 `Event` 如下: ```java public class Event { private Long id; private String title; private String ...
在示例的`addLineItem`方法中,Spring通过AOP将该方法标记为一个事务的切入点,这样在方法执行前后,Spring会自动管理事务的开始、提交或回滚。关键在于Spring如何确保在同一个事务中,HibernateTemplate执行的多个...
在实际项目中,通常会将Hibernate与Spring框架结合使用,利用Spring的依赖注入和事务管理功能,简化代码并提高可维护性。 这个"TeachDemo-Hibernate"压缩包可能包含了上述概念的实例代码,包括配置文件、实体类、...
Hibernate事务管理是Java开发中非常重要的一个环节,尤其是在企业级应用开发中,它与数据库的交互密切相关,确保数据的一致性和完整性。Hibernate作为一款流行的ORM(对象关系映射)框架,提供了一种方便的方式来...
- 读已提交(Read Committed):解决了脏读问题,但可能产生不可重复读。 - 可重复读(Repeatable Read):解决了脏读和不可重复读,但在某些情况下可能出现幻读。 - 串行化(Serializable):最高隔离级别,避免了...