在我的order by子句中,将select子句中使用的别名表达式用于条件查询

时间:2019-12-16 09:54:18

标签: spring spring-boot spring-data-jpa

我有一个与this相似的要求。我的API支持超过8个过滤器参数的过滤器。因此,我想基于传递的过滤器参数动态创建查询。我正在使用CriteriaBuilder创建动态查询

现在,我能够成功创建动态查询,但是当用户想要对an aggregate函数进行排序时,就会出现问题。在我的查询中,我有4个aggregate(count)函数。因此,为了支持对这些列进行排序,我只使用此聚合函数的expression,但我想使用此alias

expression

在我看来,重复expressionselect中的order by是不合适的。因此,是否有解决问题的方法/变通办法。我想一次声明expression alias,并在selectorder by子句中使用它,并且以后在我的group by子句中需要使用它

1 个答案:

答案 0 :(得分:0)

您可能需要构建一个自定义的投影类,您可以在https://hibernate.atlassian.net/browse/HHH-2952(来自Sergey Pulyaev)中找到一个体面且简单的SQLProjectionWithAliasSupport

如果这时还想支持子条件,那么事情就会变得更加复杂