我正在基于Spring Boot / JPA的项目上工作,我想将查询与修改分开。结果,首先在mysql中查询所有参数,然后在一个事务中进行修改,而查询不在其中,并通过事务传递给Modify方法。奇怪的是,在mysql日志中,所有查询和修改行都出现在一个 set autocommit = 0 和 commit 范围内,这意味着它们在一个事务中,而不是我想要的。
在这个项目中,我使用Spring Data JPA加载和保存数据,并正确注入了带有事务的修改方法。
public void method(some params) {
some params = some query get some result
modifyClassObj.modify(some params)
}
@Transactional
public void modify(some params) {
some update operations
xxxrepository.save(params)
}
SET autocommit=0;
some sql from query
some sql from update
commit;
我知道在mysql日志和java代码之间进行比较有点奇怪。主要思想是限制事务范围以使代码更好地运行。