hibernate - Grails 标准的复杂预测

标签 hibernate grails hibernate-criteria

我正在寻找以 Grails(或只是 Hibernate)标准形式表达以下 SQL 的方式。

select 
    sum(if( r.type = 'a', r.amount, 0)) as sum_a,    
    sum(if( r.type = 'b', r.amount, 0)) as sum_b    
from records r;

在这里,我想获得由特定列定义的不同行子集的两个总和。目标是将它们放在一个请求中。

好吧,看看一个 Projections 类,我发现它只为一个属性提供了一个基本的总和,所以预期的答案是否定的,但是最好的解决方案是什么?

最佳答案

您应该查看 sqlProjection,它允许您编写一些原生投影。

也许它看起来像这样:

Projections.sqlProjection("sum(if( {alias}.type = 'a', {alias}.amount, 0)) as sum_a",   new String[] { "sum_a" }, new Type[] { StandardBasicTypes.INTEGER})

关于hibernate - Grails 标准的复杂预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37949785/

相关文章:

java - 如何在 Hibernate Criteria 中加入后获取行数?

java - 如何将 FetchType.LAZY 与 ManyToMany 一起使用?

java - 用于在同一数据库中映射多个 MySQL 表的 Hibernate 配置文件 (.cfg.xml)?

hibernate - 如何从grails的映射表中获取值?

java - OR 父子关联的 Hibernate Critera 查询

spring - SQLSTATE(08006), ErrorCode(17002) 使用 HikariCP JDBC 连接池时

java - 使 JSONObject 可序列化

grails - 女生中的xml markupbuilder,将属性值中的单引号更改为“

java - 在 Java 中使用 EntityManager 和 Criteria 时出现 NullPointerException

java - Hibernate Criteria 查询连接示例