在我的应用程序中,我正在执行以下操作
1. Getting 25 records from the DB.
2. Update every 10 records
Here I have a loop to update every 10 records.so there will be 3 loops.
For each loop I need to have a new transaction.(so that only the 10 record will rollback and not all the records will rollback)
//line 1
getRecords();//25 records from DB //line 2
For(Records r: loop) { //line 3
add 10 records; //line 4
call update method(object with 10 records) //line 5
}
//line 6
updateRecords()//this method updates the 10 records\\line 7
这里我想我需要在第 6 行使用@Transaction(REQUIRED)。 这样只有10条记录会回滚,而不是所有记录都会回滚。
有人可以确认这是否是正确的方法吗?
最佳答案
确保在公共(public)方法上设置了@Transactional
注释。参见
http://forum.spring.io/forum/spring-projects/data/49494-transactional-on-private-methods
和
Does Spring @Transactional attribute work on a private method?
如果 updateRecords() 是私有(private)方法,则注释将不起作用。
关于java事务不应该回滚所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24052273/