访问DTO元素

时间:2018-01-12 22:26:09

标签: java arrays spring spring-boot

我遇到了问题而不确定如何处理它。

我有这样的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中设置它。

感谢您的帮助。

1 个答案:

答案 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);