请给我一些解决以下问题的想法。 我想按儿童乐器添加以下是说明
父母-子关系表1
id child parent
1 522 521
1 523 521
已处理表格2
id reading_date result child parent
1 2017-05-09 23:16:53 jsondata 523 521
2 2017-05-09 23:16:53 jsondata 522 521
3 2017-05-09 23:29:02 jsondata 523 521
4 2017-05-09 23:29:02 jsondata 522 521
5 2017-05-10 00:29:02 jsondata 523 521
6 2017-05-10 00:29:02 jsondata 522 521
在这里,我想按父日期按日期添加所有子jsondata
在以上示例中,添加记录1 + 2,3 + 4、5 + 6
查询SELECT DISTINCT on(reading_date) reading_date,id, instrument,parent,test FROM formula_data p WHERE p.parent =521 ORDER BY reading_date, instrument
很好,但是JPA不支持on上的
由于日期在上述格式中,因此春季JPA findDistinctReadingDate无法按预期工作
此处的父InstrumentId为521。以下代码的问题是它一次又一次地循环。
@Override
public void processChildFParent(long parentInstrumentId) {
//Get all records by parent id
List<FormulaData> formulaDataLst = fDataService.findByParent(parentInstrumentId);
formulaDataLst.forEach(formulaData -> {
//Get all records
List<FormulaData> formulaDataLst4Process = fDataService.findByParentAndReadingDate(formulaData.getParent(),formulaData.getReadingDate());
formulaDataLst4Process.forEach(processData -> {
try {
JSONObject jsonObj = new JSONObject(processData.getTest());
JSONArray arr = jsonObj.getJSONArray("formulaData");
for (int i = 0; i < arr.length(); i++)
{
changeA = changeA +arr.getJSONObject(i).getDouble("Change in B");
changeB = changeB + arr.getJSONObject(i).getDouble("Change in A");
}
dateTS = convertDateToTimeStamp(processData.getReadingDate());
} catch (JSONException e) {
e.printStackTrace();
}
});
formulaResults = "\""+"c_dev_a"+ "\":\" " +changeA+"\""+","+"\""+" c_dev_b"+ "\" : \"" +changeB+"\"";
myjson = "{\"formulaData\": [{" + formulaResults + "}]}";
fDataService.save(myjson, dateTS ,parentInstrumentId);
changeA= (long)0.0;
changeB= (long)0.0;
formulaResults ="";
System.out.println("---------------------------------end------------------------------------");
});
}