如何在构建SHOT_BATCH实体时为Batch匹配对应患者信息?
解决Batch与患者信息关联的问题
你的问题其实出在遍历层级的顺序上——你直接从Order里拿所有Batches,但忽略了Batches是嵌套在Patient对象下的,所以丢失了Batch和所属Patient的绑定关系。调整一下遍历逻辑就能轻松解决这个问题:
正确的遍历顺序:Order → Patient → Batch
你需要先遍历Order下的每个Patient,再在每个Patient的上下文里遍历它的Batches。这样每个Batch都能直接关联到当前循环的Patient,自然就能获取到对应的患者姓名等信息了。
给你写一段示例代码(假设是Java环境,你可以根据自己的技术栈调整):
// 遍历传入的Order DTO列表 for (OrderDTO order : yourOrderList) { // 第一步:遍历当前Order下的每个患者(SHOTPATIENTDTO) for (SHOTPATIENTDTO patient : order.getPatients()) { // 第二步:遍历当前患者下的每个Batch(SHOTTEMPBACTH) for (SHOTTEMPBACTH batchDTO : patient.getBatches()) { // 构建SHOT_BATCH实体 SHOTBatch shotBatchEntity = new SHOTBatch(); // 设置Batch本身的属性 shotBatchEntity.setBatchId(batchDTO.getBatchId()); shotBatchEntity.setTreatmentDateTime(batchDTO.getTreatmentDateTime()); shotBatchEntity.setStatus(batchDTO.getStatus()); // 这里直接从当前循环的Patient对象中获取患者信息 shotBatchEntity.setPatientFirstName(patient.getPatientFirstName()); shotBatchEntity.setPatientLastName(patient.getPatientLastName()); shotBatchEntity.setPatientDob(patient.getPatientDob()); shotBatchEntity.setPatientUr(patient.getPatientUr()); shotBatchEntity.setPatientId(patient.getPatientId()); // 保存实体到数据库 shotBatchDAO.save(shotBatchEntity); } } }
为什么这个逻辑能解决问题?
原来的逻辑跳过了Patient层级,相当于把所有Patient下的Batches都混在一起遍历,自然分不清哪个Batch属于哪个Patient。现在通过三层嵌套循环,每一层都保留了上下文:
- 外层循环锁定当前处理的Order
- 中间层锁定当前Order下的某个Patient
- 内层循环处理的Batch,必然属于中间层的这个Patient
这样就从遍历逻辑上保证了Batch和Patient的关联关系不会丢失,你可以放心地把患者信息赋值给对应的SHOT_BATCH实体。
内容的提问来源于stack exchange,提问作者DJ-
相关产品推荐
相关产品推荐

