JPA不支持Postgres Distinct on。任何替代

时间:2018-07-05 02:47:22

标签: java spring postgresql hibernate jpa

请给我一些解决以下问题的想法。 我想按儿童乐器添加以下是说明

父母-子关系表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------------------------------------");

        });     
    }

0 个答案:

没有答案