我有一个与this相似的要求。我的API支持超过8个过滤器参数的过滤器。因此,我想基于传递的过滤器参数动态创建查询。我正在使用CriteriaBuilder
创建动态查询
现在,我能够成功创建动态查询,但是当用户想要对an aggregate
函数进行排序时,就会出现问题。在我的查询中,我有4个aggregate(count)函数。因此,为了支持对这些列进行排序,我只使用此聚合函数的expression
,但我想使用此alias
expression
在我看来,重复expression
和select
中的order by
是不合适的。因此,是否有解决问题的方法/变通办法。我想一次声明expression alias
,并在select
和order by
子句中使用它,并且以后在我的group by
子句中需要使用它
答案 0 :(得分:0)
您可能需要构建一个自定义的投影类,您可以在https://hibernate.atlassian.net/browse/HHH-2952(来自Sergey Pulyaev)中找到一个体面且简单的SQLProjectionWithAliasSupport
如果这时还想支持子条件,那么事情就会变得更加复杂