Spring Data JPA 未在计划任务中返回结果

问题描述

我有一个实体 ExamEvent 和相应的存储库 ExamEventRepository。我正在服务 ExamEventService 中填充存储库。现在,尝试通过计划任务中的 ExamEventService(反过来将调用存储库)访问所有实体。但它返回空结果。奇怪的是,如果我从任何其他服务中查询来自 ExamEventService 的所有实体,它会返回所有结果。我的计划任务中似乎缺少访问 JPA 的内容。 这里可能缺少什么的任何提示? 谢谢。

ExamEventRepository.java

public interface ExamEventRepository extends JpaRepository<ExamEvent,Long>,JpaSpecificationExecutor<ExamEvent> {
    Optional<ExamEvent> findByRequestId(long requestId);
}

ExamEventService.java

@Service
@Slf4j
@Transactional
public class ExamEventService {

    @Autowired
    private ExamEventRepository examEventRepository;

    public List<ExamEvent> findAll() {
        return examEventRepository.findAll();
    }
...
}

SchedulerService.java

@Slf4j
@Service
@Transactional
public class SchedulerService {


    @Autowired
    private ExamEventRepository examEventRepository;


    @Scheduled(fixedDelayString = "${light.otp.schedule.delay-in-ms}")
    public void scheduledTask() {
        List<ExamEvent> search = examEventRepository.findAll();
        log.info("Events==>" + search); // This list is empty here.
     
    }

}

SchedulerConfig.java


@Configuration
@EnableScheduling
@EnableAsync
public class SchedulerConfig {


}

Log

在这里,一些其他服务能够在 main 线程中获取结果。

021-02-08 05:30:36.755  INFO 1774 --- [           main] c.light.request.service.RequestService   : Events==> [ExamEvent(id=3,scribeId=1,candidateId=1,requestId=2,otpGenerated=false,examSchedule=ExamSchedule(id=1,start=2021-02-08T00:30:36.409603Z,end=2021-02-08T02:30:36.409603Z))]
2021-02-08 05:30:41.437  INFO 1774 --- [   scheduling-1] com.light.scheduler.SchedulerService     : Events==> []

另一个观察结果是,将 ExamEvent 保存到存储库后,它实际上并没有反映在 H2 DB 中。我尝试保存和刷新,但在数据库中仍然不可见。检索数据的情况,似乎是通过内存中获取的。但是在调度程序服务中,它试图访问数据不存在的数据库。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)