我有一个SceneService,用于保存场景并在数据库中创建另一个实体,它们都通过JPA存储库保存

@Service("sceneService")
public class SceneService extends BaseService {

  ...
 ProcessingJob processingJob = new ProcessingJob();
 processingJobRepository.save(processingJob);

  sceneRepository.save(scene);
...
}


后来我有一份工作来挑选加工工作

@Slf4j
@Transactional
@Scope("singleton")
@Service
public class ProcessVideoJob extends AmazonService {
    @Scheduled(fixedRate = 50000)
    public void start(){

        for(ProcessingJob job : processingJobRepository.findAllByStatus(ProcessingJob.ProcessJobStatus.NEW.asInt()))
            process(job);

    }

    public void process(ProcessingJob job){
        Scene scene = sceneRepository.getOne(job.getId());
        log.info(scene.toString());
    }

}


该场景始终为空。

javax.persistence.EntityNotFoundException:无法找到ID为1的co.example.model.Scene

场景此时在DB中。如果我重新启动服务器等,它仍然无法访问此场景。我也尝试过登录等。

为什么该服务无法访问Scene实体?

最佳答案

问题在于,场景中的oneToMany关系之一已从另一个进程中取消,这阻止了场景的返回。不知道为什么。

10-04 18:04