我使用Spring Boot进行JPA / Hibernate新手,现在我已经面临同样的错误超过6小时了,这让我发疯了。
基本上,这一切都从我的控制器开始
@RestController
@RequestMapping("patientApi")
public class RestPatientController {
public static final Logger LOGGER = LoggerFactory.getLogger(RestPatientController.class);
@Autowired
private PatientService patientService;
[...]
@RequestMapping(value = "/patient/prises_en_charge/{id}", method = RequestMethod.GET)
public ResponseEntity<List<PriseEnCharge>> listAllPrisesEnChargeByPatient(@PathVariable("id") long id) {
Patient currentPatient = patientService.findById(id);
LOGGER.info("Récupération de toutes les prises en charges d'un patient avec id {}", currentPatient);
List<PriseEnCharge> prisesEnCharge = patientService.findAllPrisesEnChargeByPatient(currentPatient);
LOGGER.info("Liste de prises en charge {} ({} elements)", prisesEnCharge, prisesEnCharge.size());
if (prisesEnCharge.isEmpty()) {
LOGGER.debug("La liste des prises en charge est vide");
return new ResponseEntity(HttpStatus.NO_CONTENT);
// You many decide to return HttpStatus.NOT_FOUND
}
return new ResponseEntity<List<PriseEnCharge>>(prisesEnCharge, HttpStatus.OK);
}
}
我抓住了我想要更多数据的元素的ID。然后我在我的服务中调用DAO
@Service("patientService")
@Transactional
public class PatientServiceImpl implements PatientService {
@Autowired
private PriseEnChargeDao priseEnChargeDao;
[...]
@Override
public List<PriseEnCharge> findAllPrisesEnChargeByPatient(Patient patient) {
return priseEnChargeDao.findPriseEnChargeByPatient(patient);
}
}
DAO
@Repository
public interface PriseEnChargeDao extends JpaRepository<PriseEnCharge, Long> {
@Query("from PriseEnCharge where id_patient = :patient")
public List<PriseEnCharge> findPriseEnChargeByPatient(@Param("patient") Patient patient);
}
无论我尝试了什么它都不断抛出异常&#34; java.io.StreamCorruptedException:无效的流标题:32303138&#34;。我真的不知道了,我对这个案子感到绝望。
答案 0 :(得分:3)
我打算在这里猜一猜。如果将32303138
解释为十六进制的32位字,并将其“解码”为ASCII字符,则会得到“2018”。在我看来,就像某种日期字符串的前4个字符一样。
我的猜测是某些东西正在尝试反序列化字符串,就像它是一个对象流一样。这意味着数据库模式和hibernate映射之间存在不匹配。