【发布时间】:2020-01-05 02:21:47
【问题描述】:
我对 Spring 和 Java 作为一个整体还是很陌生,我目前正在研究一个 API。我有这段代码可以访问 MSSQL 数据库,检索结果并应该将其可视化,但它不起作用。我的意思是,如果我只调用该过程并可视化结果集,它就会正常工作。问题是我无法使用“RatingProcedure”对象。当我尝试获取某个对象的值时,它会显示以下错误:
休眠: {调用 dis_entity.spdcmpracovnici(?,?,?,?)} 2019-09-02 01:56:01.355 WARN 8720 --- [nio-8050-exec-3] .m.m.a.ExceptionHandlerExceptionResolver:已解决 [java.lang.ClassCastException:类 [Ljava.lang.Object;无法转换为 com.pproi.dcm.ratingprocedure.RatingProcedure 类([Ljava.lang.Object; 位于加载器“bootstrap”的模块 java.base 中;>com.pproi.dcm.ratingprocedure.RatingProcedure 位于加载器的未命名模块中>org.springframework.boot.devtools.restart.classloader.RestartClassLoader @7193df92)]
代码:
@GetMapping("/replacements/{sourceId}/workers")
public ResponseEntity<List<PossibleReplacementResponseModel>> getReplacements(@PathVariable Integer sourceId,
@RequestParam(required = false) Integer targetWorkerId,
@RequestParam(required = false) Integer targetLineId,
@RequestParam(required = false) String targetWorkplaces) {
List<PossibleReplacementResponseModel> response = new ArrayList<>();
// 400 Bad Request
if ((targetLineId != null && targetWorkerId != null) || (targetWorkplaces != null && targetLineId == null))
return ResponseEntity.badRequest().build();
StoredProcedureQuery ratingProcedure = entityManager.createNamedStoredProcedureQuery("dcmrating");
StoredProcedureQuery storedProcedure = ratingProcedure.setParameter("pk_target_worker", targetWorkerId)
.setParameter("pk_target_sdl", targetLineId).setParameter("pk_target_workplaces", targetWorkplaces)
.setParameter("pk_source_sdl", sourceId);
List<RatingProcedure> ratings = storedProcedure.getResultList();
for(RatingProcedure rating : ratings) {
PossibleReplacementResponseModel responseModel = new PossibleReplacementResponseModel();
Optional<Worker> _worker = workerRepository.findById(rating.getPersonalId());
if(_worker.isPresent()) {
Worker worker = _worker.get();
responseModel.setId(worker.getId());
responseModel.setName(worker.getFullName());
responseModel.setSkills(findWorkersSkills(worker));
responseModel.setPhysicalExamination(findWorkersMedicalExaminationEndDate(worker));
responseModel.setExams(findWorkersExams(worker));
responseModel.setRestrictions(findWorkersRestrictions(worker));
responseModel.setRating(rating.getRating());
}
response.add(responseModel);
}
return ResponseEntity.ok(response);
}
我什至可能对解决方案有所了解!我可能应该自定义我的重启类加载器,如here 所示,但是我的技能到此结束,我不知道我应该在文件中指定什么。
有什么想法吗?
非常感谢。
【问题讨论】:
标签: java spring spring-boot