在我的主要Java线程中,我需要插入一个实体,生成一个线程并结束。在新线程中,我需要更新实体。当我在两个线程中都使用repository.save()时,第二次保存总是像插入一样。我以为我理解了问题,并将主要问题更改为saveAndFlush。这在一种测试环境中有效,而在另一种环境中则无效。我想念什么吗?冲洗不是应该解决的吗?
主线程
...
myEntity = myEntityRepository.saveAndFlush(myEntity);
invokeNewThread(myEntity);
return;
新主题
invokeNewThread(MyEntity myEntity) {
Executor executor;
executor = Executors.newSingleThreadExecutor();
executor.execute(
new Runnable() {
MyEntity myEntity;
public Runnable init(MyEntity myEntity) {
this.myEntity = myEntity;
return this;
}
public void run() {
// Some supposedly long running code
myEntity.set...;
myEntityRepository.save(myEntity);
}
}.init(myEntity));
}