我有一个Spring JPA多线程程序,其中多线程保存到一个表中。我想知道在下面的场景中会发生什么:
两个线程选取相同的对象进行处理,并< code >保存到表中。数据已成功保存。争用解决机制识别出其中一个数据是重复的,并发出< code>delete请求。这种删除是否也会将对象从第一个线程的上下文中删除?
(当通过JPA的save
方法成功返回的对象突然被记录为null
时,会出现间歇性问题。)
为了避免这种情况,您可以尝试使用saveAndFlush
而不是save
。这可能会解决意外删除的问题。
参考:Spring data jpa中保存和保存AndFlush的区别