我有一个Spring JPA多线程程序,其中多个线程保存到一个表中。我想知道在以下场景中会发生什么:
2个线程选取相同的对象进行处理,并将save
添加到表中。数据已成功保存。争用解决机制发现其中一个数据重复,并发出delete
请求。此删除操作是否还会从第一个线程的上下文中删除该对象?
(We当通过JPA的save
方法应该成功返回的对象突然被记录为null
时,会出现间歇性问题。)
我有一个Spring JPA多线程程序,其中多个线程保存到一个表中。我想知道在以下场景中会发生什么:
2个线程选取相同的对象进行处理,并将save
添加到表中。数据已成功保存。争用解决机制发现其中一个数据重复,并发出delete
请求。此删除操作是否还会从第一个线程的上下文中删除该对象?
(We当通过JPA的save
方法应该成功返回的对象突然被记录为null
时,会出现间歇性问题。)
1条答案
按热度按时间dgsult0t1#
要避免这种情况,您可以尝试使用
saveAndFlush
而不是save
。这可能会解决意外删除的问题。参考:Difference between save and saveAndFlush in Spring data jpa