我有一个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关系之一已从另一个进程中取消,这阻止了场景的返回。不知道为什么。