我遇到了问题而不确定如何处理它。
我有这样的DTO: -
订购DTO: -
[
{
"ordNo": "77456",
"patients" :[ :- THIS DTO IS SHOTPATIENTDTO
{
"patientFirstName" : "Test",
"patientLastName" : "Dummy",
"patientDob" : "2018-01-04",
"patientUr" : "12345",
"patientId" : "1",
"batches" :[ //:------SHOTTEMPBACTH DTO
{
"batchId":"37", :- for each of the ID, I will set the BATCHDTO
"treatmentDateTime": "2017-12-06 17:55:50",
"status":"Submitted"
},
{
"batchId":"38",
"treatmentDateTime": "2017-12-06 17:55:50",
"Status":"On Hold"
}]
},
{
"patientFirstName" : "Second",
"patientLastName" : "Dummy",
"patientDob" : "2018-01-04",
"patientUr" : "542",
"patientId" : "1",
"batches" :[
{
"batchId":"39",
"treatmentDateTime": "2017-12-06 17:55:50",
"status":"Submitted"
},
{
"batchId":"40",
"treatmentDateTime": "2017-12-06 17:55:50",
"Status":"On Hold"
}]
}]
}]
我有一个与BATCH TABLE有一对多关系的ORDER。
具有批次列表的订单(使用batchId检索批次并使用ORDER DTO设置对象),还有另一个实体SHOT_BATCH,其中包含Batch +一些其他属性,如患者详细信息。
因此,在构建我的shotbatch实体进行保存时,
我这样做 [1]
for ( each of the order, get me the batches)
{
create an object of SHOTBATCH and set the properties
}
DAO.save(SHOTBATCH)
我的问题是,我想为每个批次设置患者姓名。我该如何迭代才能得到它?在上面的例子中,我会 在上面的循环中得到4批(37-40)[1]。那么如何确定哪个患者属于哪个批次,以便我可以在SHOTBATCH中设置它。
感谢您的帮助。
答案 0 :(得分:0)
如果我的问题出了问题,请告诉我。我知道你想要构建一个集合并批量保存它,而不是为每个batchShot对象调用DAO.save。我会以这种方式接近它:
假设我们有BatchShot对象:
class ShotBatch {
private List<Shot> shots;
private String patientName;
public ShotBatch(final String patientName, final Shot[] shots) {
this.shots = Arrays.asList(shots);
this.patientName = patientName;
}
// getters setters
}
然后创建和保存代码将是:
List<ShotBatch> patientBatches = new ArrayList<>();
for (final Order order: orders) {
for (final Patient patient: order.getPatients()) {
// Assuming that patien has method getFullName that returns a String
// and getShots that returns an array of Shots
patientBatches.add(new ShotBatch(patient.getFullName(), patient.getShots()));
}
}
ShotBatchDao.saveAll(patientBatches);