Jpa Group By Query返回Map <enum,list <bean =“”>&gt; </enum,>

时间:2012-06-29 16:34:49

标签: hibernate jpa eclipselink

您好。

我想在以下场景中使用EclipseLink JPA通过查询创建一个组:

emum BeanType
类BeanParam {id,beanType,@ ManyToOne param}

枚举ParamType
类Param {id,name,paramType,foo,bar}

我希望通过BeanType查询&lt; ParamType,List&lt; Param&gt;&gt;的地图,这意味着附加到该BeanType的参数按其paramTypes分组。

你们将如何做这项工作?

谢谢!

1 个答案:

答案 0 :(得分:0)

我首先执行JPQL查询:

select distinct param from BeanParam beanParam
inner join beanParam.param param
where beanParam.beanType = :beanType

然后我将遍历返回的List<Param>,并按paramType对它们进行分组。使用番石榴,它将是:

ListMultimap<ParamType, Param> m = ArrayListMultimap.create();
for (Param param : params) {
    m.put(param.getParamType(), param);
}