今天遇到一个奇怪的问题,使用Hibernate执行查询语句的时候,数据中的数据无缘地被改变了。首先想到的是把持久态的对象在Action中改变了属性值,但是没发现有这样的操作。百思不得其解。使用Debug模式跟踪了一下,发现确实是在list方法执行时出现对数据的莫名更改,而我用JUnit进行单元测试时,却没有这样的情况。
public List<T> findByHql(String hql, int startPos, int length,Object[] paramValues) {
session = getCurrentSession();
Query query = session.createQuery(hql);
if (paramValues!=null&¶mValues.length>0){
for (int i = 0; i < paramValues.length; i++) {
query.setParameter(i, paramValues[i]);
}
}
query.setFirstResult(startPos);
query.setMaxResults(length);
List<T> list = query.list();
return list;
}
解决办法,在Spring中的事务控制部分将该方法配置成只读方式:
<tx:attributes>
<tx:method name="add*" propagation="REQUIRES_NEW" />
<tx:method name="update*" propagation="REQUIRES_NEW" />
<tx:method name="delete*" propagation="REQUIRES_NEW" />
<tx:method name="find*" read-only="true" />
<tx:method name="*" propagation="REQUIRED" />
</tx:attributes>
分享到:
相关推荐
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. ...
2. **主库的`read_only`参数被设置为1**:在MySQL服务器的全局配置中,`read_only`参数默认为0,表示允许读写操作。如果被设置为1,服务器将变为只读状态。通常,普通用户无权更改此参数,除非他们拥有相应的管理...
### 使用Spring引起的错误:Write operations are not allowed in read-only mode (FlushMode.NEVER) #### 问题背景 在使用Spring框架时,特别是在与Hibernate结合的情况下,可能会遇到“Write operations are not...
*" read-only="true"/> eclipse出不来自动补齐功能。 要在开头加上这二句: 1.xmlns:tx="http://www.springframework.org/schema/tx" 2....
Spring 事务配置是Spring 框架中的重要组成部分,它提供了对数据库操作事务性的管理,确保数据的一致性和完整性。Spring 提供了多种方式来配置事务管理,主要分为编程式事务管理和声明式事务管理。下面将详细介绍这...
每个角色都有一个操作:USER = VIEW ONLY,ADMIN = READ / WRITE,SUPER = CREATE。 所有密码均使用DES加密,并使用argon2编码,以确保密码强度高。科技栈Java专家弹簧靴百里香叶引导程序jQuery的sockjsDocker堆栈...
注解中还可以设置不同的属性,如propagation(事务传播行为)、isolation(隔离级别)、timeout(超时时间)和read-only(只读事务)等,以满足不同场景的需求。 例如,在一个简单的Spring MVC应用中,你可能会在...
在IT行业中,Spring框架是Java企业级应用开发的首选框架之一,尤其是在事务管理方面,它提供了强大而灵活的解决方案。Spring 2.0版本在事务处理方面做了许多改进,使得开发者能够更有效地管理应用程序的事务边界。这...
*" read-only="false"/> ``` 这将使所有以`save`开头的方法都作为读写事务执行。 4. **创建AOP代理**: 为了让事务通知生效,我们需要创建一个AOP代理。可以使用`<aop:config>`和`<aop:advisor>`标签来实现。`...
在Spring 3.x框架中,事务管理是核心功能之一,它可以帮助开发者轻松地处理应用程序的事务边界,确保数据的一致性和完整性。在给定的文件片段中,提到了使用`<tx:advice>`和`<tx:attributes>`来配置事务增强。下面将...
We're certainly pleased that you have acquired the only published book fully devoted to Spring Security 4.2. Before we get started with the book, we would like to give you an overview of how the book...
*" read-only="true"/> </tx:advice> <!-- 那些类的哪些方法参与事务 --> (* com.ccc..*.*(..))"/> <aop:advisor pointcut-ref="allManagerMethod" advice-ref="txAdvice"/> <!-- 配置...
<?xml version="1.0" encoding="UTF-8... *" read-only="true"/> *" propagation="REQUIRED"/> *" propagation="REQUIRED"/> *" propagation="REQUIRED"/> *" propagation="REQUIRED"/> </beans>
*" read-only="true"/> <!-- AOP切面配置 --> (* com.ibatis.manager.*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/> ``` 以上配置中,`txAdvice`定义了不同的方法...
`usage`属性可以是`read-only`、`nonstrict-read-write`、`read-write`或`transactional`,根据业务需求选择合适的缓存策略。 5. **在Spring中配置SessionFactory**:在Spring的配置文件中,定义SessionFactory ...
*" read-only="true"/> ``` 这里的配置意味着,以"save"、"update"或"delete"开头的方法会启动一个新的事务,并在遇到异常时回滚;而其他方法默认标记为只读事务,不进行任何写操作。 然后,通过`<aop:config>...
*" read-only="true" /> *" /> *" propagation="NEVER" /> --> destroy-method="close"> ${jdbc.driverClassName}" /> ${jdbc.url}" /> ${jdbc.username}" /> ${jdbc....
*" propagation="REQUIRED" read-only="true"/> *" propagation="REQUIRED"/> ``` - **事务管理器**:定义了一个名为`myTxManager`的事务管理器Bean,该Bean基于Hibernate Session Factory。 - **事务通知**:...
每个角色都有一个操作:USER = VIEW ONLY,ADMIN = READ / WRITE,SUPER = CREATE。 所有密码均使用AES加密,并使用scrypt编码,以确保密码强度高。 科技栈 Kotlin 专家 弹簧靴 百里香叶 引导程序 jQuery的 sockjs ...