问题描述
我有一个实体 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 (将#修改为@)