如何使用spring数据进行groupBY

时间:2017-01-03 14:41:50

标签: spring group-by spring-data

您好我在我的项目中使用弹簧数据而我在两个字段中尝试分组,继续请求:

@Query( "SELECT obj from Agence obj GROUP BY obj.secteur.nomSecteur,obj.nomAgence" )
  Iterable<Agence> getSecteurAgenceByPc();

但它对我不起作用..我想要的是这个结果:

-Safi
  -CTM
    CZC1448YZN
    2UA13817KT

-Rabat
  -CTM
    CZC1349G1B
    2UA0490SVR
  -Agdal
    G3M4NOJ

-Essaouira
  -CTM
    CZC1221B85
  -Gare Routiere Municipale
    CZC145YL3

我得到的是

{
    "status": 0,
    "data":
    [
        {
            "secteur": "Safi",
            "agence": "CTM"
        },
        {
            "secteur": "Safi",
            "agence": "Dep"
        },
        {
            "secteur": "Rabat",
            "agence": "Agdal"
        },
        {
            "secteur": "Rabat",
            "agence": "CTM"
        },
        {
            "secteur": "Essaouira",
            "agence": "CTM"
        },
        {
            "secteur": "Essaouira",
            "agence": "Gare Routiere Municipale"
        }
    ]
}

1 个答案:

答案 0 :(得分:1)

JPQL无法实现您的目标。

Group By做什么?

它将group by子句中列中相同的所有行组合到一行中。由于它将多行合并为一行,因此其他列中的数据只能以某种组合方式存在。例如,您可以包含MIN / MAX或AVG值,但不能包含原始值。

结果总是一张桌子,从不是一棵树。

另请注意:没有重复的数据。 secteur agence 的每个组合只出现一次。

如果你想要一个树形结构,你必须为它编写一些java代码。